ZQuest Classic Coverage Report


Directory: src/
File: src/parser/y.tab.cpp
Date: 2024-06-14 07:26:05
Exec Total Coverage
Lines: 1068 1763 60.6%
Functions: 39 51 76.5%
Branches: 824 2345 35.1%

Line Branch Exec Source
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
36 especially those whose name start with YY_ or yy_. They are
37 private implementation details that can be changed or removed. */
38
39 /* Identify Bison output, and Bison version. */
40 #define YYBISON 30802
41
42 /* Bison version string. */
43 #define YYBISON_VERSION "3.8.2"
44
45 /* Skeleton name. */
46 #define YYSKELETON_NAME "glr.c"
47
48 /* Pure parsers. */
49 #define YYPURE 0
50
51
52
53
54
55
56 /* First part of user prologue. */
57 #line 8 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
58
59 #include "parserDefs.h"
60 #include <stdlib.h>
61 #include <stdio.h>
62 #include <cassert>
63 #include <string>
64 #include <set>
65 #include <sstream>
66 #include "ASTVisitors.h"
67 #include "CompileOption.h"
68 #include "zsyssimple.h"
69 #include "parser/ParserHelper.h"
70 #include "base/util.h"
71
72 using std::string;
73 using std::ostringstream;
74 using namespace ZScript;
75
76 #define YYINCLUDED_STDLIB_H
77 extern int32_t yydebug;
78 extern int32_t yyrow;
79 extern int32_t yycol;
80 extern char* yytext;
81 extern int32_t yyleng;
82 extern int32_t yylex(void);
83 extern FILE *yyin, *yyout;
84 extern ZScript::AST* first_identifier_for_line;
85 extern void resetLexer();
86 void yyerror(std::unique_ptr<ASTFile>& root, const char* s);
87 void yymsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
88 void yywarn(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
89 void yyerrmsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
90 void yydb(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
91 std::string curfilename;
92 extern YYLTYPE noloc;
93
94 #define push_front(v, elem) (v).insert((v).begin(), elem)
95 void trunc_str(std::string& str, size_t sz, std::string const& header, int32_t row = yyrow,
96 int32_t col = yycol, char const* txt = yytext)
97 {
98 if(str.size() > sz)
99 {
100 yyerrmsg("ERROR: "+header+": String value '" + str + "' is too long. Max '"+std::to_string(sz)+"' characters.", row, col, txt);
101 str = str.substr(0,sz);
102 }
103 }
104
105 enum
106 {
107 ANNTY_NONE,
108 ANNTY_STR,
109 ANNTY_INT,
110 ANNTY_MAX
111 };
112 static string annot_tys[ANNTY_MAX] = {"Empty", "String", "Number"};
113
114 int annot_row, annot_col;
115 string annot_err_txt;
116 static const string annot_err_header = "ERROR: Bad Annotation Value";
117 struct AnnotData
118 {
119 string key, strval;
120 string val, unescaped_val;
121 int intval;
122 uint type;
123 };
124 void annot_errstr(string const& str)
125 {
126 yyerrmsg(str, annot_row, annot_col, annot_err_txt.c_str());
127 }
128 void annot_trunc_str(string& str, size_t size)
129 {
130 trunc_str(str, size, annot_err_header, annot_row, annot_col, annot_err_txt.c_str());
131 }
132 bool annot_type_check(uint expected, AnnotData const& data)
133 {
134 if(expected == data.type)
135 return true;
136 annot_errstr("ERROR: Bad Annotation Value: @"+data.key
137 +" expects a "+annot_tys[expected]+", not a "+annot_tys[data.type]);
138 return false;
139 }
140 void handle_annotations(ASTAnnotationList* list, std::function<bool(AnnotData&)> fn)
141 {
142 owning_vector<ASTAnnotation>& set = list->set;
143 annot_row = list->location.first_line;
144 annot_col = list->location.first_column;
145 std::set<std::string> used_keys;
146 for(size_t q = 0; q < set.size(); ++q)
147 {
148 ASTAnnotation* a = set[q];
149 AnnotData data = AnnotData();
150 data.key = a->key->getValue();
151 data.type = ANNTY_NONE;
152 data.strval = "";
153 data.intval = 0;
154 if(a->strval)
155 {
156 data.type = ANNTY_STR;
157 data.strval = a->strval->getValue();
158 }
159 else if(a->intval)
160 {
161 data.type = ANNTY_INT;
162 data.intval = a->intval->getValue(nullptr);
163 }
164
165 data.val = "";
166 data.unescaped_val = "";
167 switch(data.type)
168 {
169 case ANNTY_STR:
170 data.val = data.strval;
171 data.unescaped_val = util::disallow_escapes(util::escape_characters(data.strval));
172 break;
173 case ANNTY_INT:
174 data.val = data.unescaped_val = to_string(data.intval);
175 break;
176 }
177 annot_err_txt = "@" + data.key + "(" + data.val + ")";
178
179 if(used_keys.contains(data.key))
180 {
181 annot_errstr("ERROR: Duplicate Annotation Key: @"+data.key+" was already set.");
182 continue;
183 }
184 if(!fn(data))
185 annot_errstr("ERROR: Bad Annotation Key: '"+data.val+"'");
186 }
187 delete list;
188 }
189
190 ASTExpr* handle_statement_expr(ASTExpr* expr)
191 {
192 if(ASTExprIncrement* increm = dynamic_cast<ASTExprIncrement*>(expr))
193 {
194 increm->is_pre = true;
195 }
196 else if(ASTExprDecrement* decrem = dynamic_cast<ASTExprDecrement*>(expr))
197 {
198 decrem->is_pre = true;
199 }
200 return expr;
201 }
202
203 #pragma warning( disable : 4065 )
204
205 #line 206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
206
207 # ifndef YY_CAST
208 # ifdef __cplusplus
209 # define YY_CAST(Type, Val) static_cast<Type> (Val)
210 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
211 # else
212 # define YY_CAST(Type, Val) ((Type) (Val))
213 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
214 # endif
215 # endif
216 # ifndef YY_NULLPTR
217 # if defined __cplusplus
218 # if 201103L <= __cplusplus
219 # define YY_NULLPTR nullptr
220 # else
221 # define YY_NULLPTR 0
222 # endif
223 # else
224 # define YY_NULLPTR ((void*)0)
225 # endif
226 # endif
227
228 #include "y.tab.hpp"
229
230 /* Symbol kind. */
231 enum yysymbol_kind_t
232 {
233 YYSYMBOL_YYEMPTY = -2,
234 YYSYMBOL_YYEOF = 0, /* "end of file" */
235 YYSYMBOL_YYerror = 1, /* error */
236 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
237 YYSYMBOL_SCRIPT = 3, /* SCRIPT */
238 YYSYMBOL_ZCLASS = 4, /* ZCLASS */
239 YYSYMBOL_FOR = 5, /* FOR */
240 YYSYMBOL_LOOP = 6, /* LOOP */
241 YYSYMBOL_IF = 7, /* IF */
242 YYSYMBOL_ELSE = 8, /* ELSE */
243 YYSYMBOL_SWITCH = 9, /* SWITCH */
244 YYSYMBOL_CASE = 10, /* CASE */
245 YYSYMBOL_DEFAULT = 11, /* DEFAULT */
246 YYSYMBOL_RETURN = 12, /* RETURN */
247 YYSYMBOL_IMPORT = 13, /* IMPORT */
248 YYSYMBOL_ZTRUE = 14, /* ZTRUE */
249 YYSYMBOL_ZFALSE = 15, /* ZFALSE */
250 YYSYMBOL_WHILE = 16, /* WHILE */
251 YYSYMBOL_BREAK = 17, /* BREAK */
252 YYSYMBOL_CONTINUE = 18, /* CONTINUE */
253 YYSYMBOL_ZCONST = 19, /* ZCONST */
254 YYSYMBOL_DO = 20, /* DO */
255 YYSYMBOL_TYPEDEF = 21, /* TYPEDEF */
256 YYSYMBOL_EXPECTERROR = 22, /* EXPECTERROR */
257 YYSYMBOL_OPTIONVALUE = 23, /* OPTIONVALUE */
258 YYSYMBOL_ISINCLUDED = 24, /* ISINCLUDED */
259 YYSYMBOL_DEFINE = 25, /* DEFINE */
260 YYSYMBOL_ENUM = 26, /* ENUM */
261 YYSYMBOL_NAMESPACE = 27, /* NAMESPACE */
262 YYSYMBOL_USING = 28, /* USING */
263 YYSYMBOL_ALWAYS = 29, /* ALWAYS */
264 YYSYMBOL_ZASM = 30, /* ZASM */
265 YYSYMBOL_INCLUDE = 31, /* INCLUDE */
266 YYSYMBOL_INCLUDEPATH = 32, /* INCLUDEPATH */
267 YYSYMBOL_INCLUDEIF = 33, /* INCLUDEIF */
268 YYSYMBOL_UNTIL = 34, /* UNTIL */
269 YYSYMBOL_UNLESS = 35, /* UNLESS */
270 YYSYMBOL_REPEAT = 36, /* REPEAT */
271 YYSYMBOL_INLINE = 37, /* INLINE */
272 YYSYMBOL_INTERNAL = 38, /* INTERNAL */
273 YYSYMBOL_STATIC = 39, /* STATIC */
274 YYSYMBOL_CONSTEXPR = 40, /* CONSTEXPR */
275 YYSYMBOL_NEW = 41, /* NEW */
276 YYSYMBOL_DELETE = 42, /* DELETE */
277 YYSYMBOL_CASSERT = 43, /* CASSERT */
278 YYSYMBOL_ZAUTO = 44, /* ZAUTO */
279 YYSYMBOL_ZVOID = 45, /* ZVOID */
280 YYSYMBOL_UNTYPED = 46, /* UNTYPED */
281 YYSYMBOL_ZBOOL = 47, /* ZBOOL */
282 YYSYMBOL_ZFLOAT = 48, /* ZFLOAT */
283 YYSYMBOL_ZCHAR = 49, /* ZCHAR */
284 YYSYMBOL_ZLONG = 50, /* ZLONG */
285 YYSYMBOL_ZRGB = 51, /* ZRGB */
286 YYSYMBOL_COMMA = 52, /* COMMA */
287 YYSYMBOL_DOT = 53, /* DOT */
288 YYSYMBOL_SEMICOLON = 54, /* SEMICOLON */
289 YYSYMBOL_SCOPERES = 55, /* SCOPERES */
290 YYSYMBOL_COLON = 56, /* COLON */
291 YYSYMBOL_IN = 57, /* IN */
292 YYSYMBOL_LPAREN = 58, /* LPAREN */
293 YYSYMBOL_RPAREN = 59, /* RPAREN */
294 YYSYMBOL_EMPTYBRACKETS = 60, /* EMPTYBRACKETS */
295 YYSYMBOL_LBRACKET = 61, /* LBRACKET */
296 YYSYMBOL_RBRACKET = 62, /* RBRACKET */
297 YYSYMBOL_LBRACE = 63, /* LBRACE */
298 YYSYMBOL_RBRACE = 64, /* RBRACE */
299 YYSYMBOL_QMARK = 65, /* QMARK */
300 YYSYMBOL_ARROW = 66, /* ARROW */
301 YYSYMBOL_INCREMENT = 67, /* INCREMENT */
302 YYSYMBOL_DECREMENT = 68, /* DECREMENT */
303 YYSYMBOL_NOT = 69, /* NOT */
304 YYSYMBOL_BITNOT = 70, /* BITNOT */
305 YYSYMBOL_EXPN = 71, /* EXPN */
306 55260 YYSYMBOL_TIMES = 72, /* TIMES */
307 YYSYMBOL_DIVIDE = 73, /* DIVIDE */
308 YYSYMBOL_MODULO = 74, /* MODULO */
309 YYSYMBOL_PLUS = 75, /* PLUS */
310 YYSYMBOL_MINUS = 76, /* MINUS */
311 YYSYMBOL_LSHIFT = 77, /* LSHIFT */
312 YYSYMBOL_RSHIFT = 78, /* RSHIFT */
313 3943877 YYSYMBOL_LE = 79, /* LE */
314 3943877 YYSYMBOL_LT = 80, /* LT */
315 YYSYMBOL_GE = 81, /* GE */
316 3638 YYSYMBOL_GT = 82, /* GT */
317 3638 YYSYMBOL_EQ = 83, /* EQ */
318
1/2
✓ Branch 0 taken 3638 times.
✗ Branch 1 not taken.
3638 YYSYMBOL_NE = 84, /* NE */
319 YYSYMBOL_BITAND = 85, /* BITAND */
320
2/6
✓ Branch 0 taken 55315 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55315 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
55315 YYSYMBOL_BITXOR = 86, /* BITXOR */
321 YYSYMBOL_BITOR = 87, /* BITOR */
322 YYSYMBOL_AND = 88, /* AND */
323 YYSYMBOL_OR = 89, /* OR */
324 53714 YYSYMBOL_XOR = 90, /* XOR */
325 1160 YYSYMBOL_ASSIGN = 91, /* ASSIGN */
326 3755 YYSYMBOL_PLUSASSIGN = 92, /* PLUSASSIGN */
327 37031 YYSYMBOL_MINUSASSIGN = 93, /* MINUSASSIGN */
328 2466 YYSYMBOL_TIMESASSIGN = 94, /* TIMESASSIGN */
329 2736481 YYSYMBOL_DIVIDEASSIGN = 95, /* DIVIDEASSIGN */
330 988449 YYSYMBOL_MODULOASSIGN = 96, /* MODULOASSIGN */
331 3465 YYSYMBOL_LSHIFTASSIGN = 97, /* LSHIFTASSIGN */
332 10 YYSYMBOL_RSHIFTASSIGN = 98, /* RSHIFTASSIGN */
333 32892 YYSYMBOL_BITANDASSIGN = 99, /* BITANDASSIGN */
334 84448 YYSYMBOL_BITXORASSIGN = 100, /* BITXORASSIGN */
335 YYSYMBOL_BITORASSIGN = 101, /* BITORASSIGN */
336 YYSYMBOL_ANDASSIGN = 102, /* ANDASSIGN */
337 6 YYSYMBOL_ORASSIGN = 103, /* ORASSIGN */
338 YYSYMBOL_CAST = 104, /* CAST */
339 YYSYMBOL_RANGE = 105, /* RANGE */
340 YYSYMBOL_RANGE_L = 106, /* RANGE_L */
341 YYSYMBOL_RANGE_R = 107, /* RANGE_R */
342 YYSYMBOL_RANGE_LR = 108, /* RANGE_LR */
343 YYSYMBOL_RANGE_N = 109, /* RANGE_N */
344 YYSYMBOL_APPXEQUAL = 110, /* APPXEQUAL */
345 YYSYMBOL_DOUBLEBANG = 111, /* DOUBLEBANG */
346 YYSYMBOL_PERCENT = 112, /* PERCENT */
347 YYSYMBOL_BITNOTASSIGN = 113, /* BITNOTASSIGN */
348 YYSYMBOL_INVMOD = 114, /* INVMOD */
349 YYSYMBOL_DOUBLEADDR = 115, /* DOUBLEADDR */
350 YYSYMBOL_DOUBLESTAR = 116, /* DOUBLESTAR */
351 YYSYMBOL_HANDLE = 117, /* HANDLE */
352 YYSYMBOL_HANDLETOHANDLE = 118, /* HANDLETOHANDLE */
353 YYSYMBOL_ADDR = 119, /* ADDR */
354 YYSYMBOL_HASH = 120, /* HASH */
355 YYSYMBOL_ENDLINE = 121, /* ENDLINE */
356 YYSYMBOL_NEWLINE = 122, /* NEWLINE */
357 YYSYMBOL_OPTION = 123, /* OPTION */
358 YYSYMBOL_INHERIT = 124, /* INHERIT */
359 YYSYMBOL_IDENTIFIER = 125, /* IDENTIFIER */
360 YYSYMBOL_QUOTEDSTRING = 126, /* QUOTEDSTRING */
361 YYSYMBOL_CASESTRING = 127, /* CASESTRING */
362 YYSYMBOL_IMPORTSTRING = 128, /* IMPORTSTRING */
363 YYSYMBOL_SINGLECHAR = 129, /* SINGLECHAR */
364 YYSYMBOL_NUMBER = 130, /* NUMBER */
365 YYSYMBOL_LONGNUMBER = 131, /* LONGNUMBER */
366 YYSYMBOL_YYACCEPT = 132, /* $accept */
367 YYSYMBOL_Init = 133, /* Init */
368 YYSYMBOL_Global_List = 134, /* Global_List */
369 YYSYMBOL_Global_Statement = 135, /* Global_Statement */
370 4683 YYSYMBOL_Namespace = 136, /* Namespace */
371 4683 YYSYMBOL_Namespace_Block_List = 137, /* Namespace_Block_List */
372 4683 YYSYMBOL_Namespace_Statement = 138, /* Namespace_Statement */
373
2/2
✓ Branch 0 taken 4682 times.
✓ Branch 1 taken 1 times.
4683 YYSYMBOL_Using = 139, /* Using */
374 YYSYMBOL_AlwaysUsing = 140, /* AlwaysUsing */
375 4682 YYSYMBOL_Import = 141, /* Import */
376 4682 YYSYMBOL_IncludePath = 142, /* IncludePath */
377 4682 YYSYMBOL_Option = 143, /* Option */
378
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4682 times.
4682 YYSYMBOL_Statement_Assert = 144, /* Statement_Assert */
379 4682 YYSYMBOL_DataTypeDef = 145, /* DataTypeDef */
380 4682 YYSYMBOL_StandardDataTypedef = 146, /* StandardDataTypedef */
381
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_EnumDataTypedef = 147, /* EnumDataTypedef */
382 YYSYMBOL_DataType = 148, /* DataType */
383
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 YYSYMBOL_DataType_Mods = 149, /* DataType_Mods */
384 YYSYMBOL_DataType_Base = 150, /* DataType_Base */
385 YYSYMBOL_ScriptTypeDef = 151, /* ScriptTypeDef */
386 YYSYMBOL_Data = 152, /* Data */
387 YYSYMBOL_Data_List = 153, /* Data_List */
388 YYSYMBOL_Data_Element = 154, /* Data_Element */
389 YYSYMBOL_Data_Element_Array_List = 155, /* Data_Element_Array_List */
390 YYSYMBOL_Single_Data_req_assign = 156, /* Single_Data_req_assign */
391 YYSYMBOL_Data_Element_Array_Element = 157, /* Data_Element_Array_Element */
392 YYSYMBOL_Data_Element_Array_Element_Size_List = 158, /* Data_Element_Array_Element_Size_List */
393 YYSYMBOL_Function = 159, /* Function */
394 YYSYMBOL_Function_Typeless = 160, /* Function_Typeless */
395 YYSYMBOL_Function_Heading = 161, /* Function_Heading */
396 YYSYMBOL_FunctionTemplateList = 162, /* FunctionTemplateList */
397 YYSYMBOL_Function_Parameters_List = 163, /* Function_Parameters_List */
398 YYSYMBOL_Function_Parameters_Element = 164, /* Function_Parameters_Element */
399 YYSYMBOL_Function_OptParams_List = 165, /* Function_OptParams_List */
400 YYSYMBOL_Function_VarArg_Element = 166, /* Function_VarArg_Element */
401 YYSYMBOL_Class_Ident = 167, /* Class_Ident */
402 YYSYMBOL_Class = 168, /* Class */
403 YYSYMBOL_Class_Block = 169, /* Class_Block */
404 YYSYMBOL_Class_Block_List = 170, /* Class_Block_List */
405 YYSYMBOL_Class_Constructor = 171, /* Class_Constructor */
406 YYSYMBOL_Class_Destructor = 172, /* Class_Destructor */
407 YYSYMBOL_Class_Data = 173, /* Class_Data */
408 YYSYMBOL_Class_Block_Element = 174, /* Class_Block_Element */
409 YYSYMBOL_Annotated_Script = 175, /* Annotated_Script */
410 YYSYMBOL_Script = 176, /* Script */
411 YYSYMBOL_Script_Type = 177, /* Script_Type */
412 YYSYMBOL_Script_Block = 178, /* Script_Block */
413 YYSYMBOL_Script_Block_List = 179, /* Script_Block_List */
414 YYSYMBOL_Script_Block_Element = 180, /* Script_Block_Element */
415 4683 YYSYMBOL_Annotation_List = 181, /* Annotation_List */
416
2/4
✓ Branch 0 taken 4683 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4683 times.
✗ Branch 3 not taken.
4683 YYSYMBOL_Annotation = 182, /* Annotation */
417 YYSYMBOL_Block_Statement = 183, /* Block_Statement */
418 YYSYMBOL_Statement = 184, /* Statement */
419 YYSYMBOL_Statement_NoSemicolon = 185, /* Statement_NoSemicolon */
420 YYSYMBOL_Statement_Block = 186, /* Statement_Block */
421 YYSYMBOL_Statement_Block_List = 187, /* Statement_Block_List */
422 YYSYMBOL_Statement_If = 188, /* Statement_If */
423 33174 YYSYMBOL_If_Body = 189, /* If_Body */
424 33174 YYSYMBOL_Statement_Switch = 190, /* Statement_Switch */
425 33174 YYSYMBOL_Statement_Switch_Body = 191, /* Statement_Switch_Body */
426 33174 YYSYMBOL_Statement_Switch_Cases = 192, /* Statement_Switch_Cases */
427 33174 YYSYMBOL_Statement_For = 193, /* Statement_For */
428 YYSYMBOL_Statement_CommaList = 194, /* Statement_CommaList */
429 YYSYMBOL_Statement_For_Standard = 195, /* Statement_For_Standard */
430 YYSYMBOL_Statement_For_Each = 196, /* Statement_For_Each */
431 YYSYMBOL_Annotated_Loop = 197, /* Annotated_Loop */
432 YYSYMBOL_Statement_Loop = 198, /* Statement_Loop */
433 YYSYMBOL_Statement_Loop_Inf = 199, /* Statement_Loop_Inf */
434 YYSYMBOL_Statement_Loop_Range = 200, /* Statement_Loop_Range */
435 YYSYMBOL_Statement_Loop_Range_Base = 201, /* Statement_Loop_Range_Base */
436 YYSYMBOL_Token_In = 202, /* Token_In */
437 YYSYMBOL_Statement_While = 203, /* Statement_While */
438 YYSYMBOL_Statement_Do = 204, /* Statement_Do */
439 YYSYMBOL_Statement_Repeat = 205, /* Statement_Repeat */
440
2/6
✓ Branch 0 taken 4684 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4684 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4684 YYSYMBOL_Statement_Return = 206, /* Statement_Return */
441 YYSYMBOL_Statement_CompileError = 207, /* Statement_CompileError */
442 YYSYMBOL_DataEnum = 208, /* DataEnum */
443 YYSYMBOL_Enum_Block = 209, /* Enum_Block */
444 YYSYMBOL_ScopeRes = 210, /* ScopeRes */
445 YYSYMBOL_Identifier_List = 211, /* Identifier_List */
446 YYSYMBOL_Scoperes_Identifier_List = 212, /* Scoperes_Identifier_List */
447 YYSYMBOL_Mixed_Identifier_List = 213, /* Mixed_Identifier_List */
448 YYSYMBOL_idlist_scopres = 214, /* idlist_scopres */
449 YYSYMBOL_idlist_dot = 215, /* idlist_dot */
450 YYSYMBOL_Ambigious_Iden_List = 216, /* Ambigious_Iden_List */
451 YYSYMBOL_Identifier = 217, /* Identifier */
452 928 YYSYMBOL_Func_Left = 218, /* Func_Left */
453 47 YYSYMBOL_Function_Call = 219, /* Function_Call */
454 YYSYMBOL_Function_Call_Parameters = 220, /* Function_Call_Parameters */
455 307 YYSYMBOL_Expr_1 = 221, /* Expr_1 */
456 36509 YYSYMBOL_Expr_2 = 222, /* Expr_2 */
457 26 YYSYMBOL_Expr_Arrow = 223, /* Expr_Arrow */
458 28 YYSYMBOL_Expr_3 = 224, /* Expr_3 */
459 4 YYSYMBOL_Expr_4 = 225, /* Expr_4 */
460 7 YYSYMBOL_Expr_5 = 226, /* Expr_5 */
461 1 YYSYMBOL_Expr_6 = 227, /* Expr_6 */
462 1 YYSYMBOL_Expr_7 = 228, /* Expr_7 */
463 YYSYMBOL_Expr_8 = 229, /* Expr_8 */
464 YYSYMBOL_Expr_9 = 230, /* Expr_9 */
465 YYSYMBOL_Expr_10 = 231, /* Expr_10 */
466 YYSYMBOL_Expr_11 = 232, /* Expr_11 */
467 YYSYMBOL_Expr_12 = 233, /* Expr_12 */
468 YYSYMBOL_Expr_13 = 234, /* Expr_13 */
469 YYSYMBOL_Expr_14 = 235, /* Expr_14 */
470 YYSYMBOL_Expr_15 = 236, /* Expr_15 */
471 YYSYMBOL_Expr_16 = 237, /* Expr_16 */
472 YYSYMBOL_Expr_17 = 238, /* Expr_17 */
473 YYSYMBOL_Expr_18 = 239, /* Expr_18 */
474 7 YYSYMBOL_Expression = 240, /* Expression */
475
2/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7 YYSYMBOL_Statement_Expression = 241, /* Statement_Expression */
476 YYSYMBOL_Expression_Constant = 242, /* Expression_Constant */
477 YYSYMBOL_Expression_Const_Range = 243, /* Expression_Const_Range */
478 YYSYMBOL_Expression_Range = 244, /* Expression_Range */
479 YYSYMBOL_Literal = 245, /* Literal */
480 YYSYMBOL_QuotedString = 246, /* QuotedString */
481 YYSYMBOL_Literal_String = 247, /* Literal_String */
482 YYSYMBOL_Literal_Bool = 248, /* Literal_Bool */
483 YYSYMBOL_Literal_Array = 249, /* Literal_Array */
484 YYSYMBOL_Literal_Array_Body = 250 /* Literal_Array_Body */
485 };
486 typedef enum yysymbol_kind_t yysymbol_kind_t;
487
488
489 34897 /* Default (constant) value used for initialization for null
490
3/8
✓ Branch 0 taken 34897 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 34897 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 34897 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
34897 right-hand sides. Unlike the standard yacc.c template, here we set
491 the default value of $$ to a zeroed-out value. Since the default
492 value is undefined, this behavior is technically correct. */
493 18817 static YYSTYPE yyval_default;
494
3/8
✓ Branch 0 taken 18817 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18817 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18817 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18817 static YYLTYPE yyloc_default
495 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
496 = { 1, 1, 1, 1 }
497 # endif
498 ;
499
500
501
502 #include <stddef.h>
503 #include <stdint.h>
504 #include <stdio.h>
505 #include <stdlib.h>
506 1160 #include <string.h>
507
3/8
✓ Branch 0 taken 1160 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1160 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1160 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1160
508 #ifdef short
509 # undef short
510 #endif
511
512 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
513 <limits.h> and (if available) <stdint.h> are included
514 so that the code can choose integer types of a good width. */
515
516 3646 #ifndef __PTRDIFF_MAX__
517 3646 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
518
3/8
✓ Branch 0 taken 3646 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3646 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3646 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
3646 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
519 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
520 # define YY_STDINT_H
521 # endif
522 #endif
523
524 /* Narrow types that promote to a signed type and that can represent a
525 signed or unsigned integer of at least N bits. In tables they can
526 save space and decrease cache pressure. Promoting to a signed type
527 helps avoid bugs in integer arithmetic. */
528
529 #ifdef __INT_LEAST8_MAX__
530 typedef __INT_LEAST8_TYPE__ yytype_int8;
531 #elif defined YY_STDINT_H
532 typedef int_least8_t yytype_int8;
533 #else
534 typedef signed char yytype_int8;
535 #endif
536
537 #ifdef __INT_LEAST16_MAX__
538 typedef __INT_LEAST16_TYPE__ yytype_int16;
539 #elif defined YY_STDINT_H
540 typedef int_least16_t yytype_int16;
541 #else
542 typedef short yytype_int16;
543 #endif
544
545 /* Work around bug in HP-UX 11.23, which defines these macros
546 incorrectly for preprocessor constants. This workaround can likely
547 be removed in 2023, as HPE has promised support for HP-UX 11.23
548 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
549 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
550 #ifdef __hpux
551 # undef UINT_LEAST8_MAX
552 # undef UINT_LEAST16_MAX
553 # define UINT_LEAST8_MAX 255
554 # define UINT_LEAST16_MAX 65535
555 #endif
556
557 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
558 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
559 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
560 && UINT_LEAST8_MAX <= INT_MAX)
561 typedef uint_least8_t yytype_uint8;
562 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
563 typedef unsigned char yytype_uint8;
564 #else
565 typedef short yytype_uint8;
566 #endif
567
568 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
569 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
570 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
571 && UINT_LEAST16_MAX <= INT_MAX)
572 typedef uint_least16_t yytype_uint16;
573 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
574
3/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18 typedef unsigned short yytype_uint16;
575 #else
576 typedef int yytype_uint16;
577 #endif
578 #ifndef YYPTRDIFF_T
579 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
580 # define YYPTRDIFF_T __PTRDIFF_TYPE__
581 11075 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
582 26005 # elif defined PTRDIFF_MAX
583 # ifndef ptrdiff_t
584 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
585 # endif
586 11075 # define YYPTRDIFF_T ptrdiff_t
587 11075 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
588
4/10
✓ Branch 0 taken 11075 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11075 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 11075 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 11075 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
11075 # else
589 # define YYPTRDIFF_T long
590 # define YYPTRDIFF_MAXIMUM LONG_MAX
591 # endif
592 #endif
593 26005
594 26005 #ifndef YYSIZE_T
595
3/8
✓ Branch 0 taken 26005 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26005 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 26005 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
26005 # ifdef __SIZE_TYPE__
596 # define YYSIZE_T __SIZE_TYPE__
597 # elif defined size_t
598 # define YYSIZE_T size_t
599 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
600 274969 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
601 274969 # define YYSIZE_T size_t
602 274969 # else
603 # define YYSIZE_T unsigned
604 9840699 # endif
605 #endif
606
607 #define YYSIZE_MAXIMUM \
608 YY_CAST (YYPTRDIFF_T, \
609 689756 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
610 689756 ? YYPTRDIFF_MAXIMUM \
611 689756 : YY_CAST (YYSIZE_T, -1)))
612
613 9150943 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
614
615
616 #ifndef YY_
617 # if defined YYENABLE_NLS && YYENABLE_NLS
618
2/6
✓ Branch 0 taken 30 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 30 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
30 # if ENABLE_NLS
619
2/6
✓ Branch 0 taken 507545 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 507545 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
507545 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
620
2/6
✓ Branch 0 taken 109158 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 109158 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
109158 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
621
2/6
✓ Branch 0 taken 813449 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 813449 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
813449 # endif
622
2/6
✓ Branch 0 taken 4726742 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4726742 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4726742 # endif
623
2/6
✓ Branch 0 taken 542604 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 542604 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
542604 # ifndef YY_
624
2/6
✓ Branch 0 taken 41545 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41545 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41545 # define YY_(Msgid) Msgid
625
2/6
✓ Branch 0 taken 10082 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10082 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10082 # endif
626 #endif
627
628 3089544
629 3089544 #ifndef YYFREE
630
1/4
✓ Branch 0 taken 3089544 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
6179088 # define YYFREE free
631 #endif
632 #ifndef YYMALLOC
633 # define YYMALLOC malloc
634 #endif
635 #ifndef YYREALLOC
636 # define YYREALLOC realloc
637 2466 #endif
638 2466
639
3/8
✓ Branch 0 taken 2466 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2466 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2466 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2466 #ifdef __cplusplus
640 typedef bool yybool;
641 # define yytrue true
642 # define yyfalse false
643 #else
644 /* When we move to stdbool, get rid of the various casts to yybool. */
645 typedef signed char yybool;
646 # define yytrue 1
647 # define yyfalse 0
648 1115454 #endif
649
1/2
✓ Branch 0 taken 1115454 times.
✗ Branch 1 not taken.
1115454
650 #ifndef YYSETJMP
651 1115454 # include <setjmp.h>
652 1115454 # define YYJMP_BUF jmp_buf
653 # define YYSETJMP(Env) setjmp (Env)
654 4559977 /* Pacify Clang and ICC. */
655 4559977 # define YYLONGJMP(Env, Val) \
656 4559977 do { \
657
2/2
✓ Branch 0 taken 4395412 times.
✓ Branch 1 taken 164565 times.
4559977 longjmp (Env, Val); \
658 164565 YY_ASSERT (0); \
659 4559977 } while (yyfalse)
660 4559977 #endif
661
662 #ifndef YY_ATTRIBUTE_PURE
663 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
664 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
665 2837 # else
666 2837 # define YY_ATTRIBUTE_PURE
667 2837 # endif
668 2837 #endif
669 2837
670 #ifndef YY_ATTRIBUTE_UNUSED
671 4559977 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
672
2/6
✓ Branch 0 taken 4559977 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4559977 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4559977 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
673 # else
674
2/2
✓ Branch 0 taken 3392643 times.
✓ Branch 1 taken 1167334 times.
4559977 # define YY_ATTRIBUTE_UNUSED
675 1167334 # endif
676 #endif
677
678 /* The _Noreturn keyword of C11. */
679 #ifndef _Noreturn
680 # if (defined __cplusplus \
681 3390403 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
682 3390403 || (defined _MSC_VER && 1900 <= _MSC_VER)))
683 3390403 # define _Noreturn [[noreturn]]
684 3390403 # elif ((!defined __cplusplus || defined __clang__) \
685 3390403 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
686 2797561 || (!defined __STRICT_ANSI__ \
687 && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
688 || (defined __apple_build_version__ \
689 ? 6000000 <= __apple_build_version__ \
690 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
691 298641 /* _Noreturn works as-is. */
692 298641 # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \
693 298641 || 0x5110 <= __SUNPRO_C)
694 298641 # define _Noreturn __attribute__ ((__noreturn__))
695 298641 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
696 # define _Noreturn __declspec (noreturn)
697 6187964 # else
698
2/6
✓ Branch 0 taken 6187964 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6187964 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6187964 # define _Noreturn
699 # endif
700
2/4
✓ Branch 0 taken 6187964 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6187964 times.
✗ Branch 3 not taken.
6187964 #endif
701
702 /* Suppress unused-variable warnings by "using" E. */
703
2/2
✓ Branch 0 taken 2628732 times.
✓ Branch 1 taken 3559232 times.
6187964 #if ! defined lint || defined __GNUC__
704 # define YY_USE(E) ((void) (E))
705 #else
706 # define YY_USE(E) /* empty */
707 #endif
708
709 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
710 2 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
711 2 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
712
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
713 _Pragma ("GCC diagnostic push") \
714 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
715 # else
716 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
717 _Pragma ("GCC diagnostic push") \
718 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
719 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
720 # endif
721 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
722 _Pragma ("GCC diagnostic pop")
723 34697 #else
724 34697 # define YY_INITIAL_VALUE(Value) Value
725 34697 #endif
726
2/6
✓ Branch 0 taken 263944 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 263944 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
263944 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
727 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
728 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
729 #endif
730 #ifndef YY_INITIAL_VALUE
731 # define YY_INITIAL_VALUE(Value) /* Nothing. */
732 #endif
733
734 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
735 # define YY_IGNORE_USELESS_CAST_BEGIN \
736 _Pragma ("GCC diagnostic push") \
737 34697 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
738
2/6
✓ Branch 0 taken 34697 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 34697 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
34697 # define YY_IGNORE_USELESS_CAST_END \
739 _Pragma ("GCC diagnostic pop")
740 #endif
741 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
742 # define YY_IGNORE_USELESS_CAST_BEGIN
743 # define YY_IGNORE_USELESS_CAST_END
744 #endif
745
746
747 #define YY_ASSERT(E) ((void) (0 && (E)))
748
749 15618 /* YYFINAL -- State number of the termination state. */
750
1/2
✓ Branch 0 taken 15618 times.
✗ Branch 1 not taken.
15618 #define YYFINAL 3
751 /* YYLAST -- Last index in YYTABLE. */
752 #define YYLAST 2674
753
754 /* YYNTOKENS -- Number of terminals. */
755 15618 #define YYNTOKENS 132
756 15618 /* YYNNTS -- Number of nonterminals. */
757 #define YYNNTS 119
758 /* YYNRULES -- Number of rules. */
759 #define YYNRULES 385
760 /* YYNSTATES -- Number of states. */
761 #define YYNSTATES 745
762 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
763 #define YYMAXRHS 11
764 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
765 accessed by $0, $-1, etc., in any rule. */
766 #define YYMAXLEFT 0
767
768 /* YYMAXUTOK -- Last valid token kind. */
769 #define YYMAXUTOK 386
770
771 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
772 as returned by yylex, with out-of-bounds checking. */
773 #define YYTRANSLATE(YYX) \
774 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
775 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
776 : YYSYMBOL_YYUNDEF)
777
778 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
779 as returned by yylex. */
780 static const yytype_uint8 yytranslate[] =
781 {
782 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788
1/2
✓ Branch 0 taken 669108 times.
✗ Branch 1 not taken.
669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 669108 times.
669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
798 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
799 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
800 669108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
803 1603810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 1603810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805
2/2
✓ Branch 0 taken 1527854 times.
✓ Branch 1 taken 75956 times.
1603810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806 75956 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
807 1603810 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
808 1603810 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
809 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
810 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
811 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
812 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
813 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
814 934715 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
815 934715 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
816 934715 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
817 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
818 702810 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
819 702810 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
820
4/18
✓ Branch 0 taken 702810 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 702810 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 702810 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 702810 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
1405620 125, 126, 127, 128, 129, 130, 131
821 };
822
823 1 #if YYDEBUG
824 1 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
825 1 static const yytype_int16 yyrline[] =
826 1 {
827 0, 306, 306, 312, 315, 320, 324, 325, 326, 327,
828 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
829 338, 349, 369, 422, 428, 439, 444, 452, 453, 454,
830 455, 456, 457, 458, 459, 460, 461, 462, 463, 473,
831 1618557 479, 488, 492, 496, 505, 515, 521, 526, 531, 536,
832 1618557 541, 546, 549, 552, 555, 558, 561, 570, 573, 581,
833 1618557 582, 585, 592, 599, 604, 608, 613, 618, 619, 620,
834 1618557 621, 622, 623, 624, 625, 627, 636, 647, 653, 664,
835 1618557 670, 680, 686, 690, 696, 709, 722, 726, 730, 736,
836 1618557 747, 758, 774, 785, 802, 812, 817, 822, 829, 837,
837 851, 856, 864, 870, 875, 876, 877, 881, 891, 899,
838 909, 918, 921, 932, 933, 937, 943, 953, 958, 969,
839 19022 974, 979, 984, 998, 1008, 1021, 1035, 1039, 1040, 1044,
840 19022 1045, 1046, 1047, 1048, 1059, 1259, 1272, 1279, 1280, 1284,
841 19022 1290, 1300, 1305, 1313, 1314, 1315, 1316, 1317, 1318, 1319,
842 19022 1327, 1331, 1338, 1343, 1348, 1353, 1359, 1365, 1375, 1392,
843 19022 1393, 1394, 1395, 1397, 1398, 1399, 1400, 1401, 1402, 1403,
844
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 19022 times.
19022 1404, 1405, 1406, 1407, 1408, 1413, 1414, 1419, 1420, 1421,
845 19022 1426, 1427, 1428, 1430, 1431, 1432, 1433, 1434, 1435, 1436,
846 19022 1437, 1438, 1439, 1440, 1445, 1446, 1451, 1452, 1456, 1457,
847 19022 1461, 1466, 1473, 1478, 1486, 1487, 1495, 1499, 1504, 1508,
848 1516, 1523, 1530, 1540, 1545, 1549, 1554, 1561, 1566, 1571,
849 1578, 1585, 1586, 1590, 1595, 1603, 1615, 1631, 1640, 1653,
850 1677, 1681, 1682, 1686, 1694, 1701, 1705, 1714, 1723, 1731,
851 1740, 1749, 1760, 1761, 1765, 1769, 1774, 1780, 1790, 1794,
852
2/6
✓ Branch 0 taken 19022 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 19022 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
19022 1799, 1805, 1815, 1822, 1825, 1829, 1837, 1838, 1846, 1852,
853 1904, 1909, 1910, 1911, 1912, 1916, 1917, 1926, 1934, 1942,
854 1950, 1961, 1969, 1977, 1984, 1992, 2003, 2013, 2017, 2018,
855 2022, 2029, 2036, 2042, 2051, 2057, 2069, 2070, 2071, 2073,
856 2083, 2091, 2097, 2099, 2101, 2103, 2105, 2108, 2111, 2113,
857 2115, 2117, 2119, 2121, 2124, 2126, 2129, 2131, 2133, 2135,
858 2138, 2140, 2142, 2145, 2147, 2149, 2152, 2154, 2156, 2158,
859 2160, 2163, 2165, 2167, 2169, 2171, 2174, 2176, 2179, 2181,
860 2184, 2186, 2189, 2191, 2194, 2196, 2199, 2201, 2210, 2211,
861 2218, 2220, 2222, 2227, 2232, 2237, 2242, 2247, 2252, 2257,
862 2263, 2269, 2274, 2279, 2284, 2290, 2293, 2300, 2306, 2317,
863 2322, 2327, 2332, 2337, 2342, 2347, 2352, 2357, 2367, 2370,
864 2373, 2377, 2378, 2379, 2380, 2384, 2391, 2397, 2401, 2410,
865 2048741 2411, 2416, 2428, 2439, 2446, 2451
866 2048741 };
867 2048741 #endif
868 2048741
869 2048741 #define YYPACT_NINF (-608)
870 #define YYTABLE_NINF (-357)
871 1315480
872
2/6
✓ Branch 0 taken 1315480 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1315480 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1315480 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
873 STATE-NUM. */
874 static const yytype_int16 yypact[] =
875 120543 {
876 928 -608, 47, 1687, -608, 54, -42, -39, 359, 1503, 45,
877
2/6
✓ Branch 0 taken 200628 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 200628 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
200628 106, 59, 97, 100, 542, 1490, 542, 542, 91, -608,
878 -608, -608, -608, -608, -608, -608, -608, -608, 109, 13,
879 201, -608, -608, 185, 194, -608, -608, -608, 198, 206,
880 -608, -608, 37, -608, -608, 210, 239, -608, -608, -608,
881 -608, 324, -10, -608, 251, 213, -608, 90, 295, 301,
882 3659717 328, -608, 218, -608, 294, -608, -608, -608, 4, 2389,
883 3659717 213, 1503, 317, 321, 298, 298, 59, 375, 542, 37,
884
2/6
✓ Branch 0 taken 3659717 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3659717 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3659717 -608, -608, -608, -608, -608, 2389, 336, 283, 285, 357,
885 32, -608, -608, -608, -608, -608, 401, -608, 10, -608,
886 203, 103, 169, -608, -608, 334, 344, -608, -608, -608,
887 -608, 213, 213, 213, 213, 213, 213, 213, 213, 353,
888 2514, -608, -608, -608, -608, 411, 424, 59, 2389, 2389,
889 2389, 2419, 2419, 2419, 2419, 2419, 1503, -608, -608, -608,
890 -608, 430, 431, -608, -608, -608, 432, 273, -608, 421,
891 291, 242, 299, 307, 160, 408, 409, 407, 412, 58,
892 174022 -608, 1850, -608, -608, 440, -608, 376, -608, -608, -608,
893 174022 -608, 27, -608, 202, 213, 1628, -608, 59, 128, 40,
894 174022 -608, -608, 2389, 1836, 1860, 213, -608, 2389, 2389, -608,
895 174022 -608, 492, 1064, -608, 382, 213, 442, -608, -608, -608,
896 174022 -608, -608, -608, -608, -608, -608, -608, 450, 2081, -608,
897 174022 59, 387, 457, -608, 459, 460, -608, -608, -608, 2549,
898 174022 -608, -608, 461, -608, 462, 103, 392, 390, 466, -608,
899 467, -608, 151, -608, -608, -608, -608, -608, 104, 2200,
900 120543 2389, 394, -608, -608, 2419, 2419, 2419, 2419, 2419, 2419,
901 120543 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
902
2/6
✓ Branch 0 taken 120543 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 120543 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
120543 2419, 2419, 2419, 2419, 2419, 2419, 2389, 2389, 2389, 2389,
903 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389,
904 1736, -608, 213, -608, 213, 171, 469, -608, -608, 1794,
905 -608, 474, -608, 476, 478, 479, 480, -608, -608, -608,
906 -608, 481, -608, 413, -608, -608, 260, 482, 483, -5,
907 485, 277, 302, 313, 318, 329, 343, -608, 184, -608,
908 -608, 2389, 487, 488, 489, 490, 2389, 494, -13, 28,
909 1445, 495, 498, 489, 499, 703, -608, 1064, -608, 486,
910
2/6
✓ Branch 0 taken 928 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 928 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
928 -608, 504, 506, 35, 508, 81, -608, -608, 1191, -608,
911 -608, -608, -608, -608, -608, -608, -608, -608, 535, -608,
912 -608, -608, 511, 512, 513, 38, -608, 515, 1503, 35,
913 514, 9, -608, -608, 94, -608, 1127, -608, 2389, -608,
914 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
915 -608, 516, 517, 2220, -608, 2389, -608, 2389, 337, -608,
916 153, -608, 509, -608, -608, 421, 421, 421, 291, 291,
917 242, 242, 299, 299, 299, 299, 307, 307, 307, 307,
918 32897 160, 408, 409, 407, 518, 412, -608, -608, -608, -608,
919 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
920 416, -608, -608, 177, -608, 2389, -608, -608, -608, -608,
921 -608, -608, -608, -608, -608, 1, 519, 524, -608, -608,
922 32896 -608, 444, -608, -608, -608, -608, -608, -608, -608, -608,
923 32896 -608, -608, -608, -608, 2389, -608, 523, 1572, 1954, 2023,
924 32896 -608, 2389, -608, 2389, -608, 530, -608, 540, 50, -608,
925 32896 2389, 2389, -608, 2389, 544, -608, -608, -608, -608, -608,
926 32896 -608, -608, -608, 1445, -608, -608, -608, -608, -608, -608,
927
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 32896 times.
32896 -608, 382, 2389, 213, 538, 547, -608, 555, -608, 556,
928 32896 557, 558, -608, 1254, -608, 559, 567, -608, -608, -608,
929 161, -608, 570, -608, -608, 2389, -608, -608, 2419, -608,
930 575, -608, -608, -608, 577, -608, -608, 507, 510, -608,
931 -608, 563, -608, -608, -608, -608, -608, -608, -608, -608,
932 32891 -608, -608, 415, -608, 2389, 1445, 2389, 415, 60, 264,
933
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 222, 35, 580, 582, 583, 584, -608, -608, 586, 587,
934 589, 590, 592, -608, -608, 594, -608, 382, 2389, -608,
935 -608, -608, -608, -608, -608, -608, -608, 759, -608, 571,
936 -608, -608, 1012, -608, -608, -608, 2389, -608, -608, 2389,
937 233, -608, 602, 2297, 415, 2389, 2389, 2389, 2389, 2389,
938 1677806 2389, 1445, 564, 1445, 1445, 593, 1445, 2389, 2389, 1572,
939 1677806 1445, 1445, 1503, 598, 601, -608, 600, -608, 607, 618,
940 1677806 2389, 2389, 261, 2297, -608, -608, -608, -608, -608, 624,
941 1677806 -608, 2389, 562, 676, 463, 678, 630, 631, -608, 683,
942 1677806 -608, 603, -608, -608, 1381, 2320, 1572, 1445, 214, 270,
943 2389, 1445, 262, 1445, -608, 1445, 1445, 2100, 636, 75,
944 894, 1445, 687, 689, 1445, -608, -608, 181, -608, 290,
945 690, -608, -608, -608, -608, 640, -608, 2389, 1445, -608,
946 -608, -608, 645, 264, 646, 647, -608, -608, -608, 894,
947 2123, 649, 1318, -608, 1445, 1445, -608, -608, 1572, 1445,
948 1445, 1445, 650, -608, -608, -608, -608, 1318, 652, 659,
949 665, -608, -608, -608, -608, 698, -608, -608, 1445, -608,
950 -608, -608, 1445, -608, -608
951 };
952
953 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
954 830 Performed when YYTABLE does not specify something else to do. Zero
955 830 means the default is an error. */
956 830 static const yytype_int16 yydefact[] =
957 830 {
958 5, 0, 2, 1, 0, 0, 0, 0, 0, 0,
959 4 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
960 4 68, 69, 70, 71, 72, 73, 74, 260, 0, 0,
961
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 277, 3, 8, 0, 0, 6, 7, 4, 0, 0,
962 59, 60, 0, 64, 66, 0, 0, 12, 15, 14,
963 13, 0, 0, 151, 0, 0, 75, 261, 262, 263,
964 264, 276, 0, 111, 0, 41, 277, 65, 0, 0,
965 0, 0, 0, 0, 265, 266, 0, 0, 0, 0,
966 92, 77, 93, 91, 90, 0, 0, 0, 0, 0,
967 4 0, 17, 18, 19, 9, 63, 78, 80, 82, 94,
968 4 0, 0, 84, 10, 11, 0, 0, 136, 134, 16,
969 273, 0, 0, 0, 0, 0, 0, 0, 0, 0,
970
2/6
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10 0, 112, 61, 379, 380, 0, 0, 0, 0, 0,
971 0, 0, 0, 0, 0, 0, 0, 377, 370, 368,
972 369, 286, 0, 295, 289, 292, 297, 298, 304, 306,
973 310, 313, 316, 321, 326, 328, 330, 332, 334, 336,
974 338, 340, 355, 357, 0, 287, 378, 371, 372, 373,
975 259, 0, 84, 0, 0, 0, 39, 0, 0, 0,
976 42, 44, 0, 0, 0, 0, 87, 0, 0, 83,
977 96, 0, 0, 95, 106, 0, 0, 150, 267, 269,
978 268, 271, 274, 270, 275, 272, 76, 0, 0, 114,
979 0, 0, 0, 120, 0, 0, 126, 128, 124, 0,
980
2/6
✓ Branch 0 taken 32882 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 32882 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
32882 121, 122, 0, 119, 0, 75, 0, 0, 0, 339,
981 0, 385, 0, 299, 300, 302, 303, 301, 0, 0,
982 0, 0, 293, 294, 0, 0, 0, 0, 0, 0,
983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
986 0, 376, 0, 256, 0, 0, 0, 21, 27, 0,
987 25, 0, 26, 0, 0, 0, 0, 31, 34, 33,
988 32, 0, 40, 0, 57, 157, 0, 0, 0, 0,
989 0, 0, 0, 0, 0, 0, 0, 79, 0, 89,
990 81, 0, 0, 0, 0, 0, 254, 0, 0, 0,
991 0, 0, 0, 0, 0, 0, 177, 0, 199, 0,
992 203, 0, 0, 0, 0, 0, 202, 164, 0, 165,
993 166, 167, 221, 222, 168, 230, 231, 232, 235, 169,
994 170, 171, 0, 0, 0, 286, 356, 0, 0, 0,
995 0, 103, 104, 105, 0, 100, 0, 135, 0, 123,
996 125, 131, 132, 129, 113, 116, 117, 118, 115, 127,
997 130, 0, 0, 0, 288, 0, 383, 0, 0, 282,
998 0, 285, 0, 291, 305, 307, 308, 309, 311, 312,
999 33702 314, 315, 318, 317, 320, 319, 322, 323, 325, 324,
1000
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 33702 times.
33702 327, 329, 331, 333, 0, 335, 341, 342, 343, 344,
1001 345, 346, 347, 348, 349, 351, 352, 353, 354, 350,
1002 0, 20, 258, 0, 62, 0, 22, 23, 24, 36,
1003 37, 28, 29, 30, 35, 0, 0, 0, 153, 154,
1004 152, 0, 55, 56, 53, 54, 51, 52, 49, 50,
1005 33702 47, 48, 45, 46, 0, 86, 0, 196, 0, 0,
1006 33702 204, 0, 253, 0, 173, 0, 175, 0, 0, 158,
1007 33702 0, 0, 205, 0, 385, 162, 179, 160, 159, 229,
1008 198, 201, 200, 0, 172, 178, 161, 163, 110, 107,
1009 33712 98, 106, 0, 0, 0, 0, 138, 0, 142, 0,
1010
2/6
✓ Branch 0 taken 33712 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 33712 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
33712 0, 0, 144, 0, 141, 0, 0, 374, 375, 280,
1011 0, 384, 0, 286, 290, 0, 283, 296, 0, 257,
1012 0, 58, 155, 156, 0, 88, 97, 192, 194, 181,
1013
1/2
✓ Branch 0 taken 33712 times.
✗ Branch 1 not taken.
33712 180, 0, 184, 185, 186, 187, 188, 189, 190, 191,
1014 197, 182, 276, 183, 0, 0, 0, 277, 0, 0,
1015 0, 0, 0, 0, 0, 0, 174, 176, 0, 0,
1016 0, 0, 0, 234, 102, 109, 101, 106, 0, 147,
1017 148, 145, 143, 137, 140, 139, 146, 0, 281, 0,
1018 284, 337, 0, 43, 193, 195, 0, 242, 243, 0,
1019 0, 233, 0, 0, 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
1021 0, 0, 0, 0, 0, 133, 0, 38, 0, 0,
1022 4 0, 0, 0, 0, 359, 361, 362, 360, 363, 0,
1023
2/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4 241, 0, 206, 208, 0, 244, 0, 0, 255, 246,
1024 252, 0, 108, 99, 0, 0, 196, 0, 0, 0,
1025 0, 0, 0, 0, 85, 0, 0, 0, 0, 0,
1026
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 0, 0, 248, 250, 0, 149, 382, 0, 224, 0,
1027 227, 367, 366, 365, 364, 0, 240, 0, 0, 238,
1028 207, 209, 0, 357, 0, 0, 358, 220, 210, 0,
1029 0, 0, 212, 245, 0, 0, 247, 381, 196, 0,
1030 0, 0, 0, 239, 219, 217, 218, 211, 0, 0,
1031 0, 214, 249, 251, 223, 225, 228, 237, 0, 216,
1032 213, 215, 0, 236, 226
1033 };
1034
1035 1103218 /* YYPGOTO[NTERM-NUM]. */
1036 static const yytype_int16 yypgoto[] =
1037 {
1038 -608, -608, -608, 447, 19, -608, -280, 78, -608, -608,
1039 1103218 -608, -1, 79, 6, -608, -608, 136, -608, 721, 20,
1040 2, -608, -31, -608, -608, -608, -608, 36, -17, -608,
1041 574598 -608, -474, -349, 98, -608, -608, 22, -608, -608, 39,
1042 574598 525, -608, -212, 24, 16, 667, -608, -608, -489, 14,
1043 574598 625, 149, -189, -578, -98, -607, -457, 399, -450, -608,
1044 55, -447, -608, -608, -608, -438, 410, -608, -608, -608,
1045 -502, -429, -428, -608, -403, -399, 21, -142, 249, -2,
1046 -40, -608, 18, -608, 17, -7, -608, -608, 342, -608,
1047 339, -608, -608, -76, 211, 232, 235, 166, 187, 496,
1048 500, 484, 502, 501, -608, -254, 629, 1782, 367, -387,
1049 -52, 49, -411, -608, -148, -608, -608, -608, 102
1050 };
1051
1052 /* YYDEFGOTO[NTERM-NUM]. */
1053 static const yytype_int16 yydefgoto[] =
1054 {
1055 0, 1, 2, 31, 288, 289, 290, 339, 34, 35,
1056 36, 340, 341, 342, 40, 41, 343, 43, 44, 295,
1057 344, 96, 170, 98, 572, 189, 318, 82, 218, 100,
1058 374, 370, 371, 372, 373, 64, 298, 121, 219, 220,
1059 221, 222, 223, 299, 300, 51, 377, 523, 524, 345,
1060 38 53, 488, 489, 551, 347, 348, 349, 480, 350, 679,
1061 38 680, 351, 689, 352, 353, 354, 355, 356, 357, 358,
1062
1/2
✓ Branch 0 taken 38 times.
✗ Branch 1 not taken.
38 609, 359, 360, 361, 362, 363, 364, 171, 55, 141,
1063 73, 57, 58, 59, 60, 61, 142, 143, 400, 144,
1064 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1065 155, 156, 157, 158, 159, 160, 161, 162, 366, 367,
1066 164, 705, 706, 165, 166, 167, 168, 169, 232
1067 };
1068
1069 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1070 positive, shift that token. If negative, reduce the rule whose
1071 number is the opposite. If YYTABLE_NINF, syntax error. */
1072 static const yytype_int16 yytable[] =
1073 {
1074 56, 37, 193, 346, 46, 56, 56, 388, 39, 447,
1075 424, 97, 56, 56, 56, 56, 52, 81, 50, 508,
1076 553, 32, 45, 54, 48, 99, 49, 554, 75, 74,
1077 555, 309, 285, 178, 595, 102, 176, 584, 47, 556,
1078 101, 484, 106, 183, 87, 88, 89, 3, 557, 558,
1079 80, 658, 83, 84, 460, 233, 234, 235, 236, 237,
1080 541, 511, 99, 172, 95, 613, 578, 570, 108, 56,
1081 186, 187, 110, 712, 559, 62, 56, 101, 560, 282,
1082 33, 38, 486, 63, 579, 677, 678, 323, 688, 65,
1083 563, 283, 27, 75, 74, 95, -279, 95, -75, 305,
1084 512, 188, 727, 69, 198, 199, 200, 201, 202, 203,
1085 204, 205, 643, 633, 27, 107, 306, 485, 225, 213,
1086 95, 281, 216, 264, 76, 228, 215, 281, 77, 122,
1087 310, 313, 316, 106, 56, 319, 90, 302, 42, 708,
1088 734, 224, 443, 111, 68, 27, 513, 265, 346, 85,
1089 79, 42, 79, 79, 317, 455, 217, 184, 487, 502,
1090 66, 194, 66, -75, 95, 397, 137, 172, 404, 70,
1091 307, 308, 553, 56, 292, 685, 514, 296, 172, 554,
1092 303, 294, 555, 195, 66, 614, 398, 304, 375, 52,
1093 365, 556, 56, 380, 75, 74, 301, 71, 212, 214,
1094 557, 558, 642, 395, -136, 535, 225, 173, 101, 553,
1095 81, 297, 536, 535, 79, 396, 554, 225, 385, 555,
1096 598, 216, -276, 282, -276, 215, 559, -276, 556, 282,
1097 560, 72, 672, 395, 86, 444, 474, 557, 558, 91,
1098 224, 539, 563, 256, 257, 717, 475, 379, 92, -276,
1099 258, 442, 93, 291, 293, 217, 42, 190, 386, 191,
1100 94, 553, 95, 559, 103, 284, 192, 560, 554, 476,
1101 259, 555, 238, 691, 620, 172, 692, 172, 56, 563,
1102 556, 621, 46, 661, 601, 640, 39, 56, 448, 557,
1103 558, 296, 394, 104, 52, 294, 50, 212, 214, 32,
1104 45, 54, 48, 52, 49, 109, 112, 114, 116, 118,
1105 301, 42, 97, 670, 697, 559, 47, 248, 249, 560,
1106 671, 698, 637, 114, 118, 297, 526, 105, 365, 693,
1107 369, 563, 694, 56, 240, 365, 172, 81, 66, 241,
1108 242, 243, 718, 107, 42, 532, 365, 501, 113, 719,
1109 27, 123, 124, 27, 115, 42, 27, 120, 33, 38,
1110 125, 126, 509, 245, 246, 247, 56, 291, 293, 615,
1111 616, 617, 618, 619, 56, 518, 250, 251, 521, 552,
1112 174, 117, 520, 27, 175, 635, 252, 253, 254, 255,
1113 456, 457, 27, 540, 179, 129, 533, 525, 462, 463,
1114 130, 7, 177, 19, 20, 21, 22, 23, 24, 25,
1115 26, 180, 522, 181, 27, 182, 42, 136, 412, 413,
1116 414, 415, 545, 464, 465, 42, 19, 20, 21, 22,
1117 23, 24, 25, 26, 466, 467, 163, 27, 580, 468,
1118 469, 582, 660, 416, 417, 418, 419, 87, 88, 89,
1119 470, 471, 163, 185, 517, 519, 405, 406, 407, 196,
1120 585, 28, 66, 137, 472, 473, 138, 139, 140, 226,
1121 562, 607, 608, 677, 678, 365, 365, 365, 206, 550,
1122 408, 409, 227, 549, 66, 410, 411, 368, -279, 239,
1123 -278, 346, 244, 260, 262, 261, 230, 231, 561, 280,
1124 263, 365, 281, 321, 369, 376, 586, 66, 378, 56,
1125 90, 381, 42, 382, 383, 389, 390, 391, 392, 403,
1126 346, 56, 594, 502, 393, 521, 394, 445, 449, 520,
1127 450, 552, 451, 452, 453, 454, 634, 461, 502, 137,
1128 495, 458, 459, 503, 525, 477, 478, 479, 481, 163,
1129 163, 163, 483, 490, 163, 320, 491, 493, 496, 522,
1130 497, 7, 498, 365, 622, 504, 505, 506, 552, 507,
1131 675, 537, 544, 510, 538, 527, 528, 546, 542, 14,
1132 78, 16, 17, 543, 576, 56, 19, 20, 21, 22,
1133 23, 24, 25, 26, 577, 56, 587, 27, -356, 216,
1134 56, 517, 519, 215, 296, 588, 401, 402, 294, 589,
1135 590, 591, 592, 596, 568, 571, 52, 606, 224, 365,
1136 552, 365, 365, 301, 365, 704, 597, 365, 365, 365,
1137 56, 550, 599, 217, 602, 549, 603, 604, 297, 623,
1138 605, 624, 625, 626, 627, 628, 632, 369, 629, 630,
1139 561, 631, 583, 636, 641, 651, 654, 663, 729, 42,
1140 664, 666, 56, 665, 365, 365, 521, 66, 550, 365,
1141 520, 365, 549, 365, 365, 212, 214, 667, 365, 365,
1142 291, 293, 365, 673, 676, 525, 681, 561, 163, 682,
1143 683, 684, 707, 482, 512, 714, 365, 715, 720, 721,
1144 522, 724, 725, 726, 494, 731, 742, 365, 739, 738,
1145 365, 501, 365, 365, 611, 740, 365, 365, 365, 365,
1146 550, 741, 7, 369, 549, 365, 501, 441, 67, 119,
1147 662, 197, 492, 42, 709, 530, 365, 534, 42, 561,
1148 365, 335, 517, 519, 387, 163, 422, 19, 20, 21,
1149 22, 23, 24, 25, 26, 499, 420, 229, 27, 730,
1150 401, 421, 531, 0, 163, 423, 425, 687, 369, 0,
1151 650, 0, 652, 653, 0, 655, 0, 0, 7, 659,
1152 8, 207, 0, 0, 0, 10, 0, 12, 0, 0,
1153 0, 0, 0, 0, 0, 0, 14, 15, 16, 17,
1154 42, 0, 18, 19, 20, 21, 22, 23, 24, 25,
1155 26, 0, 163, 0, 27, 0, 690, 0, 0, 0,
1156 696, 0, 699, 0, 700, 701, 0, 0, 66, 0,
1157 713, 0, 0, 716, 0, 0, 0, 0, 0, 0,
1158 0, 163, 0, 0, 0, 569, 573, 723, 574, 0,
1159 575, 0, 0, 0, 0, 0, 0, 163, 581, 0,
1160 163, 0, 0, 732, 733, 0, 0, 0, 735, 736,
1161 737, 0, 0, 0, 0, 0, 0, 0, 0, 163,
1162 0, 0, 0, 0, 66, 0, 0, 743, 0, 0,
1163 0, 744, 0, 0, 0, 0, 0, 0, 0, 322,
1164 323, 324, 600, 325, 710, 711, 326, 0, 123, 124,
1165 327, 328, 329, 7, 330, 8, 331, 125, 126, 0,
1166 10, 0, 12, 0, 0, 0, 0, 0, 332, 333,
1167 334, 610, 335, 612, 0, 127, 128, 18, 19, 20,
1168 21, 22, 23, 24, 25, 26, 0, 0, 336, 27,
1169 0, 0, 129, 0, 0, 163, 0, 337, 0, 0,
1170 0, 131, 132, 133, 134, 0, 0, 0, 0, 0,
1171 135, 0, 0, 638, 136, 0, 639, 0, 0, 0,
1172 569, 0, 644, 645, 646, 647, 648, 649, 0, 0,
1173 0, 0, 0, 0, 656, 657, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 0, 0, 668, 669, 0,
1175 569, 28, 0, 0, 211, 4, 5, 0, 674, 66,
1176 137, 0, 0, 138, 139, 140, 0, 0, 0, 0,
1177 0, 7, 231, 8, 286, 0, 0, 695, 10, 11,
1178 12, 0, 0, 0, 703, 0, 0, 0, 0, 14,
1179 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1180 23, 24, 25, 26, 722, 0, 0, 27, 0, 322,
1181 323, 324, 0, 325, 0, 0, 326, 703, 123, 124,
1182 327, 328, 329, 7, 330, 8, 331, 125, 126, 0,
1183 10, 0, 12, 0, 0, 0, 0, 0, 332, 333,
1184 334, 0, 335, 0, 0, 127, 128, 18, 19, 20,
1185 21, 22, 23, 24, 25, 26, 0, 0, 336, 27,
1186 0, 0, 129, 0, 0, 0, 0, 337, 338, 28,
1187 0, 131, 132, 133, 134, 0, 0, 30, 0, 0,
1188 135, 0, 0, 0, 136, 0, 7, 0, 8, 515,
1189 0, 0, 0, 10, 0, 12, 0, 0, 0, 0,
1190 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1191 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1192 0, 28, 27, 0, 211, 0, 0, 0, 0, 66,
1193 137, 516, 0, 138, 139, 140, 322, 323, 324, 0,
1194 325, 0, 0, 326, 0, 123, 124, 327, 328, 329,
1195 7, 330, 8, 331, 125, 126, 0, 10, 0, 12,
1196 0, 0, 0, 0, 0, 332, 333, 334, 0, 335,
1197 0, 0, 127, 128, 18, 19, 20, 21, 22, 23,
1198 24, 25, 26, 0, 0, 336, 27, 211, 0, 129,
1199 0, 0, 66, 0, 337, 500, 0, 0, 131, 132,
1200 133, 134, 0, 0, 0, 0, 0, 135, 0, 0,
1201 0, 136, 0, 7, 0, 8, 515, 0, 0, 0,
1202 10, 0, 12, 0, 0, 0, 0, 0, 0, 0,
1203 0, 14, 15, 16, 17, 0, 0, 18, 19, 20,
1204 21, 22, 23, 24, 25, 26, 0, 0, 28, 27,
1205 0, 211, 0, 0, 0, 0, 66, 137, 593, 0,
1206 138, 139, 140, 322, 323, 324, 0, 325, 0, 0,
1207 326, 0, 123, 124, 327, 328, 329, 7, 330, 8,
1208 331, 125, 126, 0, 10, 0, 12, 0, 0, 0,
1209 0, 0, 332, 333, 334, 0, 335, 0, 0, 127,
1210 128, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1211 0, 0, 336, 27, 211, 0, 129, 0, 0, 66,
1212 0, 337, 0, 0, 0, 131, 132, 133, 134, 0,
1213 0, 0, 0, 0, 135, 0, 0, 0, 136, 0,
1214 7, 0, 8, 515, 0, 0, 0, 10, 0, 12,
1215 0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
1216 16, 17, 0, 0, 18, 19, 20, 21, 22, 23,
1217 24, 25, 26, 0, 0, 28, 27, 0, 211, 0,
1218 0, 0, 0, 66, 137, 0, 0, 138, 139, 140,
1219 322, 323, 324, 0, 325, 0, 0, 326, 0, 123,
1220 124, 327, 328, 329, 7, 330, 8, 331, 125, 126,
1221 0, 10, 0, 12, 0, 0, 0, 0, 0, 332,
1222 333, 334, 0, 335, 0, 0, 127, 128, 18, 19,
1223 20, 21, 22, 23, 24, 25, 26, 0, 0, 336,
1224 27, 0, 0, 129, 0, 0, 66, 0, 337, 7,
1225 0, 0, 131, 132, 133, 134, 0, 0, 0, 0,
1226 0, 135, 7, 0, 0, 136, 0, 14, 15, 16,
1227 17, 0, 0, 0, 19, 20, 21, 22, 23, 24,
1228 25, 26, 0, 0, 0, 27, 0, 19, 20, 21,
1229 22, 23, 24, 25, 26, 0, 0, 0, 27, 0,
1230 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
1231 66, 137, 0, 0, 138, 139, 140, 322, 323, 324,
1232 0, 325, 0, 0, 326, 0, 123, 124, 327, 547,
1233 548, 7, 330, 8, 331, 125, 126, 0, 10, 0,
1234 0, 0, 0, 0, 0, 0, 332, 333, 0, 0,
1235 335, 0, 0, 127, 128, 66, 19, 20, 21, 22,
1236 23, 24, 25, 26, 0, 0, 0, 27, 66, 0,
1237 129, 4, 5, 0, 0, 337, 0, 0, 0, 131,
1238 132, 133, 134, 0, 0, 0, 0, 7, 135, 8,
1239 286, 0, 136, 0, 10, 11, 12, 0, 0, 0,
1240 0, 0, 0, 0, 0, 14, 15, 16, 17, 0,
1241 0, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1242 0, 0, 0, 27, 0, 0, 0, 0, 0, 28,
1243 4, 5, 287, 0, 0, 0, 0, 66, 137, 0,
1244 6, 138, 139, 140, 0, 0, 7, 0, 8, 9,
1245 0, 0, 0, 10, 11, 12, 13, 0, 0, 0,
1246 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1247 18, 19, 20, 21, 22, 23, 24, 25, 26, 4,
1248 5, 0, 27, 0, 0, 28, 0, 0, 211, 6,
1249 0, 0, 0, 30, 0, 7, 0, 8, 9, 0,
1250 0, 0, 10, 11, 12, 13, 0, 0, 0, 0,
1251 0, 0, 0, 14, 15, 16, 17, 0, 0, 18,
1252 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1253 0, 27, 0, 0, 0, 0, 0, 4, 5, 0,
1254 0, 0, 0, 0, 28, 0, 0, 29, 0, 0,
1255 0, 0, 30, 7, 0, 8, 286, 0, 0, 0,
1256 10, 11, 12, 0, 0, 0, 0, 0, 0, 0,
1257 0, 14, 15, 16, 17, 0, 0, 18, 19, 20,
1258 21, 22, 23, 24, 25, 26, 0, 311, 0, 27,
1259 123, 124, 0, 28, 0, 0, 440, 0, 446, 125,
1260 3529 126, 30, 0, 0, 0, 0, 0, 0, 0, 0,
1261 3529 0, 314, 0, 0, 123, 124, 0, 127, 128, 0,
1262 3529 0, 0, 0, 125, 126, 0, 0, 0, 0, 0,
1263 3529 0, 27, 0, 0, 129, 0, 0, 0, 0, 130,
1264 3529 0, 127, 128, 131, 132, 133, 134, 0, 0, 0,
1265 3529 0, 28, 135, 0, 211, 27, 136, 0, 129, 30,
1266 3529 0, 0, 0, 130, 0, 0, 0, 131, 132, 133,
1267 3529 134, 0, 0, 0, 0, 0, 135, 0, 0, 0,
1268 136, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1269 275, 276, 277, 278, 0, 0, 0, 0, 0, 0,
1270 312, 66, 137, 279, 0, 138, 139, 140, 123, 124,
1271 0, 0, 0, 7, 0, 0, 0, 125, 126, 0,
1272 0, 0, 0, 0, 315, 66, 137, 0, 0, 138,
1273 6000 139, 140, 0, 0, 0, 127, 128, 0, 19, 20,
1274
3/8
✓ Branch 0 taken 6000 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6000 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6000 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
6000 21, 22, 23, 24, 25, 26, 0, 0, 0, 27,
1275 0, 0, 564, 565, 0, 566, 0, 130, 0, 0,
1276 0, 131, 132, 133, 134, 0, 0, 0, 0, 0,
1277 135, 0, 0, 0, 136, 0, 0, 123, 124, 0,
1278 0, 0, 7, 0, 0, 0, 125, 126, 426, 427,
1279 3528 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
1280
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 438, 439, 0, 0, 127, 128, 0, 19, 20, 21,
1281 22, 23, 24, 25, 26, 0, 0, 0, 27, 567,
1282 137, 129, 0, 138, 139, 140, 130, 0, 0, 0,
1283 131, 132, 133, 134, 0, 0, 0, 0, 0, 135,
1284 7, 0, 0, 136, 0, 0, 0, 0, 0, 0,
1285 797 0, 0, 0, 0, 123, 124, 0, 0, 14, 208,
1286 797 16, 17, 0, 125, 126, 19, 20, 21, 22, 23,
1287 797 24, 25, 26, 0, 0, 0, 27, 123, 124, 0,
1288 797 0, 127, 128, 0, 0, 0, 125, 126, 66, 137,
1289 797 0, 0, 138, 139, 140, 27, 0, 0, 564, 0,
1290 0, 566, 0, 130, 127, 128, 0, 131, 132, 133,
1291 134, 0, 0, 0, 0, 0, 135, 0, 27, 0,
1292 136, 564, 0, 0, 566, 0, 130, 0, 0, 0,
1293 131, 132, 133, 134, 0, 0, 0, 0, 0, 135,
1294 0, 0, 0, 136, 0, 0, 66, 0, 0, 0,
1295 0, 0, 0, 0, 123, 124, 0, 0, 0, 0,
1296 0, 0, 0, 125, 126, 66, 137, 702, 0, 138,
1297 139, 140, 0, 0, 123, 124, 0, 0, 0, 0,
1298 0, 127, 128, 125, 126, 0, 0, 0, 66, 137,
1299 728, 0, 138, 139, 140, 27, 0, 0, 129, 399,
1300 0, 127, 128, 130, 0, 0, 0, 131, 132, 133,
1301
2/6
✓ Branch 0 taken 3529 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3529 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3529 134, 0, 0, 0, 0, 27, 135, 0, 129, 529,
1302 136, 0, 0, 130, 0, 0, 0, 131, 132, 133,
1303 134, 0, 0, 0, 0, 0, 135, 0, 0, 0,
1304 136, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1305 0, 123, 124, 0, 0, 0, 0, 0, 0, 0,
1306 125, 126, 0, 0, 0, 66, 137, 0, 0, 138,
1307 139, 140, 0, 0, 123, 124, 0, 0, 127, 128,
1308 0, 0, 0, 125, 126, 66, 137, 0, 0, 138,
1309 139, 140, 27, 0, 0, 564, 0, 0, 566, 0,
1310 130, 127, 128, 0, 131, 132, 133, 134, 0, 0,
1311 0, 0, 0, 135, 0, 27, 0, 136, 129, 0,
1312 0, 0, 0, 130, 686, 0, 0, 131, 132, 133,
1313 62 134, 0, 0, 0, 0, 0, 135, 0, 0, 0,
1314 4254 136, 0, 0, 123, 124, 0, 0, 0, 0, 0,
1315 1 0, 0, 125, 126, 0, 0, 0, 0, 0, 0,
1316 1 0, 0, 66, 137, 0, 0, 138, 139, 140, 0,
1317 6 127, 128, 0, 123, 124, 0, 0, 0, 0, 0,
1318 2 0, 0, 125, 126, 27, 66, 137, 129, 0, 138,
1319 139, 140, 130, 0, 0, 0, 131, 132, 133, 134,
1320 127, 0, 0, 0, 0, 135, 0, 0, 0, 136,
1321 0, 0, 0, 0, 27, 0, 0, 129, 0, 0,
1322 0, 0, 130, 0, 0, 0, 131, 132, 133, 134,
1323 0, 0, 0, 0, 0, 135, 0, 0, 0, 136,
1324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325 0, 0, 0, 0, 66, 137, 0, 0, 138, 139,
1326 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1327 0, 0, 0, 7, 0, 8, 207, 0, 0, 0,
1328 153 10, 0, 12, 0, 66, 137, 0, 0, 138, 139,
1329 153 140, 14, 208, 16, 17, 0, 0, 18, 19, 20,
1330 153 21, 22, 23, 24, 25, 26, 0, 0, 7, 27,
1331 8, 207, 0, 0, 0, 10, 0, 12, 209, 0,
1332
2/6
✓ Branch 0 taken 39 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
39 0, 0, 0, 0, 210, 0, 14, 208, 16, 17,
1333 0, 0, 18, 19, 20, 21, 22, 23, 24, 25,
1334 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
1335 0, 0, 0, 384, 0, 0, 0, 0, 0, 210,
1336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1337 0, 0, 0, 0, 211, 0, 0, 0, 0, 66,
1338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1339 192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1340 192 0, 0, 0, 0, 0, 0, 0, 0, 0, 211,
1341
2/6
✓ Branch 0 taken 192 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 192 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
192 0, 0, 0, 0, 66
1342 };
1343
1344 static const yytype_int16 yycheck[] =
1345 {
1346 2, 2, 100, 192, 2, 7, 8, 219, 2, 289,
1347 264, 42, 14, 15, 16, 17, 2, 15, 2, 368,
1348 477, 2, 2, 2, 2, 42, 2, 477, 11, 11,
1349 477, 179, 174, 85, 523, 42, 76, 511, 2, 477,
1350 42, 54, 52, 11, 31, 32, 33, 0, 477, 477,
1351 14, 629, 16, 17, 59, 131, 132, 133, 134, 135,
1352 59, 52, 79, 70, 60, 567, 16, 478, 52, 71,
1353 60, 61, 55, 680, 477, 21, 78, 79, 477, 52,
1354 2, 2, 54, 125, 34, 10, 11, 6, 666, 128,
1355 477, 64, 55, 76, 76, 60, 58, 60, 60, 59,
1356 91, 91, 709, 58, 111, 112, 113, 114, 115, 116,
1357 117, 118, 614, 587, 55, 125, 76, 130, 120, 120,
1358 60, 126, 120, 65, 27, 127, 120, 126, 28, 125,
1359 182, 183, 184, 52, 136, 187, 123, 177, 2, 64,
1360 718, 120, 284, 53, 8, 55, 52, 89, 337, 58,
1361 14, 15, 16, 17, 185, 303, 120, 125, 130, 348,
1362 125, 58, 125, 125, 60, 61, 126, 174, 244, 63,
1363 130, 131, 629, 175, 175, 664, 82, 175, 185, 629,
1364 52, 175, 629, 80, 125, 125, 82, 59, 195, 175,
1365 192, 629, 194, 210, 177, 177, 175, 91, 120, 120,
1366 629, 629, 613, 52, 3, 52, 208, 71, 210, 666,
1367 208, 175, 59, 52, 78, 64, 666, 219, 219, 666,
1368 59, 219, 53, 52, 55, 219, 629, 58, 666, 52,
1369 629, 125, 643, 52, 125, 64, 52, 666, 666, 54,
1370 219, 64, 629, 83, 84, 64, 62, 208, 54, 80,
1371 90, 282, 54, 175, 175, 219, 120, 54, 219, 56,
1372 54, 718, 60, 666, 54, 63, 63, 666, 718, 321,
1373 110, 718, 136, 59, 52, 282, 62, 284, 280, 666,
1374 718, 59, 280, 632, 538, 52, 280, 289, 289, 718,
1375 718, 289, 59, 54, 280, 289, 280, 219, 219, 280,
1376 1369554 280, 280, 280, 289, 280, 54, 57, 58, 59, 60,
1377
3/4
✓ Branch 0 taken 1369554 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 444542 times.
✓ Branch 3 taken 925012 times.
1369554 289, 175, 343, 52, 52, 718, 280, 75, 76, 718,
1378 59, 59, 602, 74, 75, 289, 378, 3, 330, 59,
1379 444542 194, 718, 62, 335, 61, 337, 343, 335, 125, 66,
1380 444542 67, 68, 52, 125, 208, 397, 348, 348, 53, 59,
1381 55, 14, 15, 55, 53, 219, 55, 63, 280, 280,
1382 23, 24, 369, 72, 73, 74, 368, 289, 289, 105,
1383
2/6
✓ Branch 0 taken 925012 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 925012 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
925012 106, 107, 108, 109, 376, 376, 77, 78, 376, 477,
1384 63, 53, 376, 55, 63, 597, 79, 80, 81, 82,
1385 130, 131, 55, 445, 58, 58, 398, 376, 121, 122,
1386 63, 19, 27, 44, 45, 46, 47, 48, 49, 50,
1387 51, 128, 376, 128, 55, 58, 280, 80, 252, 253,
1388 254, 255, 474, 121, 122, 289, 44, 45, 46, 47,
1389 48, 49, 50, 51, 121, 122, 69, 55, 490, 121,
1390 122, 493, 631, 256, 257, 258, 259, 31, 32, 33,
1391 121, 122, 85, 52, 376, 376, 245, 246, 247, 125,
1392 566463 512, 117, 125, 126, 121, 122, 129, 130, 131, 58,
1393 1 477, 56, 57, 10, 11, 477, 478, 479, 125, 477,
1394 931 248, 249, 58, 477, 125, 250, 251, 105, 58, 58,
1395 58, 680, 71, 85, 87, 86, 129, 130, 477, 59,
1396 88, 503, 126, 11, 368, 63, 513, 125, 58, 511,
1397 1684214 123, 54, 376, 54, 54, 54, 54, 125, 128, 125,
1398 505061 709, 523, 523, 712, 58, 523, 59, 58, 54, 523,
1399 899946 54, 629, 54, 54, 54, 54, 588, 52, 727, 126,
1400 56795 54, 59, 59, 8, 523, 58, 58, 58, 58, 182,
1401 175720 183, 184, 58, 58, 187, 188, 58, 58, 54, 523,
1402 1 54, 19, 54, 565, 571, 54, 54, 54, 666, 54,
1403 6770 8, 62, 128, 59, 56, 59, 59, 54, 59, 37,
1404 648 38, 39, 40, 59, 54, 587, 44, 45, 46, 47,
1405 48, 49, 50, 51, 54, 597, 58, 55, 54, 597,
1406 1583283 602, 523, 523, 597, 602, 58, 239, 240, 602, 54,
1407
2/6
✓ Branch 0 taken 209303 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 209303 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
209303 54, 54, 54, 54, 478, 479, 602, 54, 597, 621,
1408 718, 623, 624, 602, 626, 677, 59, 629, 630, 631,
1409 632, 629, 62, 597, 59, 629, 59, 130, 602, 59,
1410 130, 59, 59, 59, 58, 58, 52, 511, 59, 59,
1411 629, 59, 503, 82, 52, 91, 63, 59, 710, 523,
1412 59, 54, 664, 63, 666, 667, 664, 125, 666, 671,
1413
2/6
✓ Branch 0 taken 24474 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 24474 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
24474 664, 673, 666, 675, 676, 597, 597, 59, 680, 681,
1414 602, 602, 684, 59, 8, 664, 8, 666, 321, 59,
1415 59, 8, 56, 326, 91, 8, 698, 8, 8, 59,
1416 664, 56, 56, 56, 337, 56, 8, 709, 56, 59,
1417 712, 712, 714, 715, 565, 56, 718, 719, 720, 721,
1418 718, 56, 19, 587, 718, 727, 727, 280, 7, 62,
1419
2/6
✓ Branch 0 taken 9157 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9157 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
9157 632, 106, 333, 597, 679, 393, 738, 398, 602, 718,
1420 742, 38, 664, 664, 219, 378, 262, 44, 45, 46,
1421 47, 48, 49, 50, 51, 345, 260, 128, 55, 710,
1422 393, 261, 395, -1, 397, 263, 265, 665, 632, -1,
1423 621, -1, 623, 624, -1, 626, -1, -1, 19, 630,
1424 21, 22, -1, -1, -1, 26, -1, 28, -1, -1,
1425 -1, -1, -1, -1, -1, -1, 37, 38, 39, 40,
1426 153446 664, -1, 43, 44, 45, 46, 47, 48, 49, 50,
1427 51, -1, 445, -1, 55, -1, 667, -1, -1, -1,
1428 671, -1, 673, -1, 675, 676, -1, -1, 125, -1,
1429 681, -1, -1, 684, -1, -1, -1, -1, -1, -1,
1430 189229 -1, 474, -1, -1, -1, 478, 479, 698, 481, -1,
1431 483, -1, -1, -1, -1, -1, -1, 490, 491, -1,
1432 493, -1, -1, 714, 715, -1, -1, -1, 719, 720,
1433 721, -1, -1, -1, -1, -1, -1, -1, -1, 512,
1434 -1, -1, -1, -1, 125, -1, -1, 738, -1, -1,
1435 -1, 742, -1, -1, -1, -1, -1, -1, -1, 5,
1436 6, 7, 535, 9, 10, 11, 12, -1, 14, 15,
1437 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
1438 26, -1, 28, -1, -1, -1, -1, -1, 34, 35,
1439 36, 564, 38, 566, -1, 41, 42, 43, 44, 45,
1440 46, 47, 48, 49, 50, 51, -1, -1, 54, 55,
1441 -1, -1, 58, -1, -1, 588, -1, 63, -1, -1,
1442 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1443 76, -1, -1, 606, 80, -1, 609, -1, -1, -1,
1444 613, -1, 615, 616, 617, 618, 619, 620, -1, -1,
1445 -1, -1, -1, -1, 627, 628, -1, -1, -1, -1,
1446 -1, -1, -1, -1, -1, -1, -1, 640, 641, -1,
1447 643, 117, -1, -1, 120, 3, 4, -1, 651, 125,
1448 126, -1, -1, 129, 130, 131, -1, -1, -1, -1,
1449 -1, 19, 665, 21, 22, -1, -1, 670, 26, 27,
1450 28, -1, -1, -1, 677, -1, -1, -1, -1, 37,
1451
2/6
✓ Branch 0 taken 8761 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8761 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8761 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1452 48, 49, 50, 51, 697, -1, -1, 55, -1, 5,
1453 6, 7, -1, 9, -1, -1, 12, 710, 14, 15,
1454 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
1455 26, -1, 28, -1, -1, -1, -1, -1, 34, 35,
1456 1439559 36, -1, 38, -1, -1, 41, 42, 43, 44, 45,
1457
2/6
✓ Branch 0 taken 217 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 217 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
217 46, 47, 48, 49, 50, 51, -1, -1, 54, 55,
1458 -1, -1, 58, -1, -1, -1, -1, 63, 64, 117,
1459 -1, 67, 68, 69, 70, -1, -1, 125, -1, -1,
1460 76, -1, -1, -1, 80, -1, 19, -1, 21, 22,
1461 -1, -1, -1, 26, -1, 28, -1, -1, -1, -1,
1462 2235236 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1463 2235236 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1464 2235236 -1, 117, 55, -1, 120, -1, -1, -1, -1, 125,
1465 2235236 126, 64, -1, 129, 130, 131, 5, 6, 7, -1,
1466 9, -1, -1, 12, -1, 14, 15, 16, 17, 18,
1467 19, 20, 21, 22, 23, 24, -1, 26, -1, 28,
1468 -1, -1, -1, -1, -1, 34, 35, 36, -1, 38,
1469 -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
1470 49, 50, 51, -1, -1, 54, 55, 120, -1, 58,
1471 -1, -1, 125, -1, 63, 64, -1, -1, 67, 68,
1472 69, 70, -1, -1, -1, -1, -1, 76, -1, -1,
1473 -1, 80, -1, 19, -1, 21, 22, -1, -1, -1,
1474 2117977 26, -1, 28, -1, -1, -1, -1, -1, -1, -1,
1475
2/6
✓ Branch 0 taken 2117977 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2117977 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2117977 -1, 37, 38, 39, 40, -1, -1, 43, 44, 45,
1476 46, 47, 48, 49, 50, 51, -1, -1, 117, 55,
1477 -1, 120, -1, -1, -1, -1, 125, 126, 64, -1,
1478 129, 130, 131, 5, 6, 7, -1, 9, -1, -1,
1479 8 12, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1480
2/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8 22, 23, 24, -1, 26, -1, 28, -1, -1, -1,
1481 -1, -1, 34, 35, 36, -1, 38, -1, -1, 41,
1482 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1483 -1, -1, 54, 55, 120, -1, 58, -1, -1, 125,
1484 -1, 63, -1, -1, -1, 67, 68, 69, 70, -1,
1485 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1486 849972 19, -1, 21, 22, -1, -1, -1, 26, -1, 28,
1487 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
1488 49974 39, 40, -1, -1, 43, 44, 45, 46, 47, 48,
1489 49974 49, 50, 51, -1, -1, 117, 55, -1, 120, -1,
1490 49974 -1, -1, -1, 125, 126, -1, -1, 129, 130, 131,
1491 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
1492 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1493 -1, 26, -1, 28, -1, -1, -1, -1, -1, 34,
1494 35, 36, -1, 38, -1, -1, 41, 42, 43, 44,
1495 45, 46, 47, 48, 49, 50, 51, -1, -1, 54,
1496 2 55, -1, -1, 58, -1, -1, 125, -1, 63, 19,
1497 2 -1, -1, 67, 68, 69, 70, -1, -1, -1, -1,
1498
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 -1, 76, 19, -1, -1, 80, -1, 37, 38, 39,
1499 40, -1, -1, -1, 44, 45, 46, 47, 48, 49,
1500 50, 51, -1, -1, -1, 55, -1, 44, 45, 46,
1501 47, 48, 49, 50, 51, -1, -1, -1, 55, -1,
1502 -1, -1, 117, -1, -1, -1, -1, -1, -1, -1,
1503 125, 126, -1, -1, 129, 130, 131, 5, 6, 7,
1504 -1, 9, -1, -1, 12, -1, 14, 15, 16, 17,
1505 613476 18, 19, 20, 21, 22, 23, 24, -1, 26, -1,
1506 613476 -1, -1, -1, -1, -1, -1, 34, 35, -1, -1,
1507
2/6
✓ Branch 0 taken 613476 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 613476 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
613476 38, -1, -1, 41, 42, 125, 44, 45, 46, 47,
1508 48, 49, 50, 51, -1, -1, -1, 55, 125, -1,
1509 286468 58, 3, 4, -1, -1, 63, -1, -1, -1, 67,
1510 286468 68, 69, 70, -1, -1, -1, -1, 19, 76, 21,
1511 286468 22, -1, 80, -1, 26, 27, 28, -1, -1, -1,
1512
2/6
✓ Branch 0 taken 286468 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 286468 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
286468 -1, -1, -1, -1, -1, 37, 38, 39, 40, -1,
1513 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1514 -1, -1, -1, 55, -1, -1, -1, -1, -1, 117,
1515 3, 4, 64, -1, -1, -1, -1, 125, 126, -1,
1516 13, 129, 130, 131, -1, -1, 19, -1, 21, 22,
1517 56795 -1, -1, -1, 26, 27, 28, 29, -1, -1, -1,
1518 56795 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1519 56795 43, 44, 45, 46, 47, 48, 49, 50, 51, 3,
1520 56795 4, -1, 55, -1, -1, 117, -1, -1, 120, 13,
1521 -1, -1, -1, 125, -1, 19, -1, 21, 22, -1,
1522 -1, -1, 26, 27, 28, 29, -1, -1, -1, -1,
1523 -1, -1, -1, 37, 38, 39, 40, -1, -1, 43,
1524 621580 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1525 621580 -1, 55, -1, -1, -1, -1, -1, 3, 4, -1,
1526 621580 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1527 621580 -1, -1, 125, 19, -1, 21, 22, -1, -1, -1,
1528 621580 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
1529 621580 -1, 37, 38, 39, 40, -1, -1, 43, 44, 45,
1530 46, 47, 48, 49, 50, 51, -1, 11, -1, 55,
1531
2/6
✓ Branch 0 taken 56795 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 56795 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
56795 14, 15, -1, 117, -1, -1, 120, -1, 64, 23,
1532 24, 125, -1, -1, -1, -1, -1, -1, -1, -1,
1533 -1, 11, -1, -1, 14, 15, -1, 41, 42, -1,
1534 -1, -1, -1, 23, 24, -1, -1, -1, -1, -1,
1535 -1, 55, -1, -1, 58, -1, -1, -1, -1, 63,
1536 -1, 41, 42, 67, 68, 69, 70, -1, -1, -1,
1537 -1, 117, 76, -1, 120, 55, 80, -1, 58, 125,
1538 -1, -1, -1, 63, -1, -1, -1, 67, 68, 69,
1539 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
1540 80, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1541 36559 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
1542 36559 124, 125, 126, 113, -1, 129, 130, 131, 14, 15,
1543 36559 -1, -1, -1, 19, -1, -1, -1, 23, 24, -1,
1544 36559 -1, -1, -1, -1, 124, 125, 126, -1, -1, 129,
1545 130, 131, -1, -1, -1, 41, 42, -1, 44, 45,
1546 1859 46, 47, 48, 49, 50, 51, -1, -1, -1, 55,
1547 1859 -1, -1, 58, 59, -1, 61, -1, 63, -1, -1,
1548 1859 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1549 76, -1, -1, -1, 80, -1, -1, 14, 15, -1,
1550 929 -1, -1, 19, -1, -1, -1, 23, 24, 266, 267,
1551 929 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1552 929 278, 279, -1, -1, 41, 42, -1, 44, 45, 46,
1553 929 47, 48, 49, 50, 51, -1, -1, -1, 55, 125,
1554 126, 58, -1, 129, 130, 131, 63, -1, -1, -1,
1555 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1556 19, -1, -1, 80, -1, -1, -1, -1, -1, -1,
1557 -1, -1, -1, -1, 14, 15, -1, -1, 37, 38,
1558 39, 40, -1, 23, 24, 44, 45, 46, 47, 48,
1559 49, 50, 51, -1, -1, -1, 55, 14, 15, -1,
1560 -1, 41, 42, -1, -1, -1, 23, 24, 125, 126,
1561 -1, -1, 129, 130, 131, 55, -1, -1, 58, -1,
1562
2/6
✓ Branch 0 taken 632820 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 632820 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
632820 -1, 61, -1, 63, 41, 42, -1, 67, 68, 69,
1563 70, -1, -1, -1, -1, -1, 76, -1, 55, -1,
1564 80, 58, -1, -1, 61, -1, 63, -1, -1, -1,
1565 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1566 -1, -1, -1, 80, -1, -1, 125, -1, -1, -1,
1567
2/6
✓ Branch 0 taken 1856 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1856 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1856 -1, -1, -1, -1, 14, 15, -1, -1, -1, -1,
1568 -1, -1, -1, 23, 24, 125, 126, 127, -1, 129,
1569 130, 131, -1, -1, 14, 15, -1, -1, -1, -1,
1570 -1, 41, 42, 23, 24, -1, -1, -1, 125, 126,
1571 127, -1, 129, 130, 131, 55, -1, -1, 58, 59,
1572 -1, 41, 42, 63, -1, -1, -1, 67, 68, 69,
1573 70, -1, -1, -1, -1, 55, 76, -1, 58, 59,
1574 80, -1, -1, 63, -1, -1, -1, 67, 68, 69,
1575 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
1576 80, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1577 -1, 14, 15, -1, -1, -1, -1, -1, -1, -1,
1578 23, 24, -1, -1, -1, 125, 126, -1, -1, 129,
1579
2/6
✓ Branch 0 taken 43699 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43699 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
43699 130, 131, -1, -1, 14, 15, -1, -1, 41, 42,
1580 -1, -1, -1, 23, 24, 125, 126, -1, -1, 129,
1581 130, 131, 55, -1, -1, 58, -1, -1, 61, -1,
1582 63, 41, 42, -1, 67, 68, 69, 70, -1, -1,
1583 -1, -1, -1, 76, -1, 55, -1, 80, 58, -1,
1584 -1, -1, -1, 63, 64, -1, -1, 67, 68, 69,
1585 175715 70, -1, -1, -1, -1, -1, 76, -1, -1, -1,
1586 5 80, -1, -1, 14, 15, -1, -1, -1, -1, -1,
1587 -1, -1, 23, 24, -1, -1, -1, -1, -1, -1,
1588 -1, -1, 125, 126, -1, -1, 129, 130, 131, -1,
1589 41, 42, -1, 14, 15, -1, -1, -1, -1, -1,
1590 -1, -1, 23, 24, 55, 125, 126, 58, -1, 129,
1591 130, 131, 63, -1, -1, -1, 67, 68, 69, 70,
1592 41, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1593 -1, -1, -1, -1, 55, -1, -1, 58, -1, -1,
1594 -1, -1, 63, -1, -1, -1, 67, 68, 69, 70,
1595 -1, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1596
1/2
✓ Branch 0 taken 175718 times.
✗ Branch 1 not taken.
175718 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1597 -1, -1, -1, -1, 125, 126, -1, -1, 129, 130,
1598 131, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1599 -1, -1, -1, 19, -1, 21, 22, -1, -1, -1,
1600 26, -1, 28, -1, 125, 126, -1, -1, 129, 130,
1601 131, 37, 38, 39, 40, -1, -1, 43, 44, 45,
1602 46, 47, 48, 49, 50, 51, -1, -1, 19, 55,
1603 21, 22, -1, -1, -1, 26, -1, 28, 64, -1,
1604 -1, -1, -1, -1, 70, -1, 37, 38, 39, 40,
1605 -1, -1, 43, 44, 45, 46, 47, 48, 49, 50,
1606 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
1607 -1, -1, -1, 64, -1, -1, -1, -1, -1, 70,
1608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1609 175715 -1, -1, -1, -1, 120, -1, -1, -1, -1, 125,
1610 175715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1611 175715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1612 175715 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
1613
2/6
✓ Branch 0 taken 175715 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 175715 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
175715 -1, -1, -1, -1, 125
1614 };
1615
1616 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1617 state STATE-NUM. */
1618 static const yytype_uint8 yystos[] =
1619 {
1620 0, 133, 134, 0, 3, 4, 13, 19, 21, 22,
1621 26, 27, 28, 29, 37, 38, 39, 40, 43, 44,
1622 45, 46, 47, 48, 49, 50, 51, 55, 117, 120,
1623 125, 135, 136, 139, 140, 141, 142, 143, 144, 145,
1624 146, 147, 148, 149, 150, 151, 152, 159, 168, 175,
1625 176, 177, 181, 182, 208, 210, 211, 213, 214, 215,
1626 216, 217, 21, 125, 167, 128, 125, 150, 148, 58,
1627 63, 91, 125, 212, 214, 216, 27, 28, 38, 148,
1628 159, 152, 159, 159, 159, 58, 125, 31, 32, 33,
1629 123, 54, 54, 54, 54, 60, 153, 154, 155, 160,
1630 161, 211, 217, 54, 54, 3, 52, 125, 176, 54,
1631 216, 53, 210, 53, 210, 53, 210, 53, 210, 177,
1632 63, 169, 125, 14, 15, 23, 24, 41, 42, 58,
1633 63, 67, 68, 69, 70, 76, 80, 126, 129, 130,
1634 5 131, 211, 218, 219, 221, 222, 223, 224, 225, 226,
1635 5 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
1636 5 237, 238, 239, 240, 242, 245, 246, 247, 248, 249,
1637 154, 209, 217, 148, 63, 63, 212, 27, 242, 58,
1638
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 128, 128, 58, 11, 125, 52, 60, 61, 91, 157,
1639 54, 56, 63, 186, 58, 80, 125, 182, 217, 217,
1640 217, 217, 217, 217, 217, 217, 125, 22, 38, 64,
1641 70, 120, 139, 143, 144, 145, 152, 159, 160, 170,
1642 171, 172, 173, 174, 208, 211, 58, 58, 211, 238,
1643 240, 240, 250, 225, 225, 225, 225, 225, 148, 58,
1644 61, 66, 67, 68, 71, 72, 73, 74, 75, 76,
1645 77, 78, 79, 80, 81, 82, 83, 84, 90, 110,
1646 85, 86, 87, 88, 65, 89, 91, 92, 93, 94,
1647 95, 96, 97, 98, 99, 100, 101, 102, 103, 113,
1648 59, 126, 52, 64, 63, 209, 22, 64, 136, 137,
1649 138, 139, 143, 144, 145, 151, 152, 159, 168, 175,
1650 176, 208, 212, 52, 59, 59, 76, 130, 131, 246,
1651 242, 11, 124, 242, 11, 124, 242, 154, 158, 242,
1652 240, 11, 5, 6, 7, 9, 12, 16, 17, 18,
1653 20, 22, 34, 35, 36, 38, 54, 63, 64, 139,
1654 143, 144, 145, 148, 152, 181, 184, 186, 187, 188,
1655 190, 193, 195, 196, 197, 198, 199, 200, 201, 203,
1656 204, 205, 206, 207, 208, 211, 240, 241, 105, 148,
1657 163, 164, 165, 166, 162, 217, 63, 178, 58, 171,
1658 160, 54, 54, 54, 64, 143, 171, 172, 174, 54,
1659 54, 125, 128, 58, 59, 52, 64, 61, 82, 59,
1660 220, 240, 240, 125, 225, 226, 226, 226, 227, 227,
1661 228, 228, 229, 229, 229, 229, 230, 230, 230, 230,
1662 231, 232, 233, 234, 237, 235, 239, 239, 239, 239,
1663 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1664 120, 135, 154, 209, 64, 58, 64, 138, 143, 54,
1665 54, 54, 54, 54, 54, 246, 130, 131, 59, 59,
1666 59, 52, 121, 122, 121, 122, 121, 122, 121, 122,
1667 121, 122, 121, 122, 52, 62, 242, 58, 58, 58,
1668 189, 58, 240, 58, 54, 130, 54, 130, 183, 184,
1669 58, 58, 189, 58, 240, 54, 54, 54, 54, 198,
1670 64, 143, 184, 8, 54, 54, 54, 54, 164, 217,
1671 59, 52, 91, 52, 82, 22, 64, 139, 143, 144,
1672 145, 152, 159, 179, 180, 208, 242, 59, 59, 59,
1673 220, 240, 242, 211, 222, 52, 59, 62, 56, 64,
1674 242, 59, 59, 59, 128, 242, 54, 17, 18, 145,
1675 152, 185, 186, 188, 190, 193, 197, 203, 204, 206,
1676 207, 208, 217, 241, 58, 59, 61, 125, 148, 240,
1677 1 244, 148, 156, 240, 240, 240, 54, 54, 16, 34,
1678 242, 240, 242, 183, 163, 242, 217, 58, 58, 54,
1679 54, 54, 54, 64, 143, 180, 54, 59, 59, 62,
1680 240, 237, 59, 59, 130, 130, 54, 56, 57, 202,
1681 240, 183, 240, 202, 125, 105, 106, 107, 108, 109,
1682 1 52, 59, 217, 59, 59, 59, 59, 58, 58, 59,
1683 59, 59, 52, 163, 242, 174, 82, 138, 240, 240,
1684 52, 52, 244, 202, 240, 240, 240, 240, 240, 240,
1685 183, 91, 183, 183, 63, 183, 240, 240, 185, 183,
1686 184, 164, 165, 59, 59, 63, 54, 59, 240, 240,
1687 52, 59, 244, 59, 240, 8, 8, 10, 11, 191,
1688 192, 8, 59, 59, 8, 180, 64, 250, 185, 194,
1689 183, 59, 62, 59, 62, 240, 183, 52, 59, 183,
1690 183, 183, 127, 240, 242, 243, 244, 56, 64, 192,
1691 10, 11, 187, 183, 8, 8, 183, 64, 52, 59,
1692 8, 59, 240, 183, 56, 56, 56, 187, 127, 242,
1693 243, 56, 183, 183, 185, 183, 183, 183, 59, 56,
1694 56, 56, 8, 183, 183
1695 };
1696
1697 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1698 static const yytype_uint8 yyr1[] =
1699 {
1700 0, 132, 133, 134, 134, 134, 135, 135, 135, 135,
1701 1 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1702 135, 136, 136, 137, 137, 137, 137, 138, 138, 138,
1703 138, 138, 138, 138, 138, 138, 138, 138, 138, 139,
1704 140, 141, 141, 141, 142, 143, 143, 143, 143, 143,
1705 143, 143, 143, 143, 143, 143, 143, 144, 144, 145,
1706 145, 146, 147, 148, 148, 149, 149, 150, 150, 150,
1707 150, 150, 150, 150, 150, 150, 151, 152, 152, 153,
1708 153, 154, 154, 155, 155, 156, 157, 157, 158, 158,
1709 159, 159, 159, 159, 159, 160, 160, 160, 161, 161,
1710 162, 162, 163, 163, 163, 163, 163, 164, 165, 165,
1711 166, 167, 168, 169, 169, 170, 170, 170, 170, 170,
1712 170, 170, 170, 171, 171, 172, 173, 174, 174, 174,
1713 174, 174, 174, 174, 175, 176, 177, 178, 178, 179,
1714 179, 179, 179, 180, 180, 180, 180, 180, 180, 180,
1715 181, 181, 182, 182, 182, 182, 182, 182, 183, 184,
1716
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1717 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1718 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1719 185, 185, 185, 185, 185, 185, 185, 185, 186, 186,
1720 187, 187, 187, 187, 188, 188, 189, 189, 189, 189,
1721 190, 191, 191, 192, 192, 192, 192, 192, 192, 192,
1722 192, 193, 193, 194, 194, 195, 195, 196, 196, 197,
1723 197, 198, 198, 199, 200, 200, 201, 201, 201, 201,
1724 201, 201, 202, 202, 203, 203, 203, 203, 204, 204,
1725 204, 204, 205, 206, 206, 207, 208, 208, 209, 209,
1726 210, 211, 211, 211, 211, 212, 212, 213, 213, 213,
1727 213, 214, 214, 214, 215, 215, 216, 217, 218, 218,
1728 219, 219, 219, 219, 220, 220, 221, 221, 221, 222,
1729 222, 223, 224, 224, 224, 224, 224, 224, 225, 225,
1730 225, 225, 225, 225, 226, 226, 227, 227, 227, 227,
1731 228, 228, 228, 229, 229, 229, 230, 230, 230, 230,
1732 230, 231, 231, 231, 231, 231, 232, 232, 233, 233,
1733 234, 234, 235, 235, 236, 236, 237, 237, 238, 238,
1734 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1735 239, 239, 239, 239, 239, 240, 241, 242, 243, 244,
1736 244, 244, 244, 244, 244, 244, 244, 244, 245, 245,
1737 245, 245, 245, 245, 245, 245, 246, 246, 247, 248,
1738 248, 249, 249, 249, 250, 250
1739 };
1740
1741 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1742 static const yytype_int8 yyr2[] =
1743 {
1744 0, 2, 1, 2, 2, 0, 1, 1, 1, 2,
1745 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
1746 5, 4, 5, 2, 2, 1, 1, 1, 2, 2,
1747 2, 1, 1, 1, 1, 2, 2, 2, 5, 3,
1748 4, 2, 3, 7, 3, 5, 5, 5, 5, 5,
1749 5, 5, 5, 5, 5, 5, 5, 4, 6, 1,
1750 1, 3, 5, 2, 1, 2, 1, 1, 1, 1,
1751 1, 1, 1, 1, 1, 1, 4, 2, 2, 3,
1752 1, 3, 1, 2, 1, 4, 3, 1, 3, 1,
1753 2, 2, 2, 2, 2, 2, 2, 5, 4, 7,
1754 1, 3, 3, 1, 1, 1, 0, 2, 5, 3,
1755 2, 1, 3, 3, 2, 2, 2, 2, 2, 1,
1756 1, 1, 1, 2, 1, 2, 1, 2, 1, 2,
1757 2, 2, 2, 5, 2, 4, 1, 3, 2, 2,
1758 2, 1, 1, 2, 1, 2, 2, 2, 2, 5,
1759 3, 1, 5, 5, 5, 6, 6, 4, 1, 2,
1760 6 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
1761 1, 1, 2, 2, 3, 2, 3, 1, 2, 2,
1762 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1763 1, 1, 1, 2, 1, 2, 0, 1, 3, 2,
1764 2, 2, 1, 1, 2, 2, 4, 6, 4, 6,
1765 7, 3, 2, 4, 3, 4, 4, 3, 3, 3,
1766 6765 2, 1, 1, 3, 1, 9, 11, 7, 9, 2,
1767 6765 1, 1, 1, 4, 3, 1, 10, 9, 7, 8,
1768
2/6
✓ Branch 0 taken 6765 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6765 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6765 7, 5, 1, 1, 5, 7, 5, 7, 6, 8,
1769 6, 8, 5, 2, 1, 5, 4, 6, 3, 1,
1770 1, 1, 1, 1, 1, 1, 1, 3, 3, 3,
1771 3, 3, 3, 2, 3, 3, 1, 1, 1, 1,
1772 4, 5, 3, 4, 3, 1, 1, 1, 3, 1,
1773 4, 3, 1, 2, 2, 1, 4, 1, 1, 2,
1774 2, 2, 2, 2, 1, 3, 1, 3, 3, 3,
1775 5 1, 3, 3, 1, 3, 3, 1, 3, 3, 3,
1776 5 3, 1, 3, 3, 3, 3, 1, 3, 1, 3,
1777
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 1, 3, 1, 3, 1, 3, 1, 5, 1, 2,
1778 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1779 3, 3, 3, 3, 3, 1, 1, 1, 1, 3,
1780 3, 3, 3, 3, 5, 5, 5, 5, 1, 1,
1781 1, 1, 1, 1, 4, 4, 2, 1, 1, 1,
1782 1, 9, 8, 3, 3, 1
1783 };
1784
1785
1786 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1787 static const yytype_int8 yydprec[] =
1788 {
1789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1791 646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1792 646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1793
2/6
✓ Branch 0 taken 646 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 646 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1800 2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1801 2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1802
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1814 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1818 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1823 1541517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1824
2/6
✓ Branch 0 taken 1541517 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1541517 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1541517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1825
2/6
✓ Branch 0 taken 41767 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41767 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1827 0, 0, 0, 0, 0, 0
1828 };
1829
1830 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1831 static const yytype_int8 yymerger[] =
1832 {
1833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1837 83531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1839 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1840 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1841 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1842 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1843 1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851 1513758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 111392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854
2/6
✓ Branch 0 taken 111392 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 111392 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
111392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0
1872 };
1873
1874 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1875 in the case of predicates. */
1876 static const yybool yyimmediate[] =
1877 {
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1912 17273102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1916 3 0, 0, 0, 0, 0, 0
1917 4688 };
1918
1919 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1920 list of conflicting reductions corresponding to action entry for
1921 state STATE-NUM in yytable. 0 means no conflicts. The list in
1922 yyconfl is terminated by a rule number of 0. */
1923 static const yytype_int8 yyconflp[] =
1924 {
1925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 3, 0, 0, 0, 0, 0, 5, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970 979 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
1971 979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1972 979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1973
2/4
✓ Branch 0 taken 979 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 979 times.
✗ Branch 3 not taken.
979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1974 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1975 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1979 0, 0, 0, 11, 0, 0, 0, 0, 0, 0,
1980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1994 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1995 11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996
2/4
✓ Branch 0 taken 11 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
11 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004 17278780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2005
3/8
✓ Branch 0 taken 17278780 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17278780 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 17278780 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
17278780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008
2/2
✓ Branch 0 taken 7915213 times.
✓ Branch 1 taken 9363567 times.
17278780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2013 27146480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2017 230179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2018 1429870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2023
2/6
✓ Branch 0 taken 59 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
59 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2031 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2032 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2033 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2034 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2035 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037
2/6
✓ Branch 0 taken 83300 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 83300 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
83300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 1576748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 1576748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 1576748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 1576748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047 1576748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2052 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2053 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2056 1336148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058
2/6
✓ Branch 0 taken 1576764 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1576764 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1576764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 11117020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2070 6411395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071 1673133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2073 19201548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084 4160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2085 4160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086
2/6
✓ Branch 0 taken 4160 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4160 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092 3306283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093 3306283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094
2/6
✓ Branch 0 taken 3306283 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3306283 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3306283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097 19201548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099
3/8
✓ Branch 0 taken 48739 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 48739 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 48739 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
48739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101
3/8
✓ Branch 0 taken 19026 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 19026 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 19026 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
19026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 1660122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106
3/8
✓ Branch 0 taken 965024 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 965024 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 965024 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1930048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2108 3076104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111 20631491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2113
3/8
✓ Branch 0 taken 107316 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 107316 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 107316 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
107316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2115
3/8
✓ Branch 0 taken 55251 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55251 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 55251 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
55251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2117
3/8
✓ Branch 0 taken 328935 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 328935 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 328935 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
328935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2119
3/8
✓ Branch 0 taken 57187 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 57187 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 57187 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
57187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2121
3/8
✓ Branch 0 taken 8757 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8757 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8757 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
8757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2124 20631491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2129 20330665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131
3/8
✓ Branch 0 taken 177109 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 177109 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 177109 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
354218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2133
3/8
✓ Branch 0 taken 67586 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 67586 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 67586 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
135172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2135
3/8
✓ Branch 0 taken 56131 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 56131 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 56131 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
112262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2138 18829351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140
3/8
✓ Branch 0 taken 852300 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 852300 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 852300 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1704600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142
3/8
✓ Branch 0 taken 649014 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 649014 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 649014 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1298028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145 18707579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2147
3/8
✓ Branch 0 taken 48893 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 48893 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 48893 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
97786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149
3/8
✓ Branch 0 taken 72879 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72879 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 72879 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
145758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2152 17743349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2154
3/8
✓ Branch 0 taken 454583 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 454583 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 454583 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
909166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156
3/8
✓ Branch 0 taken 82293 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 82293 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 82293 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
164586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158
3/8
✓ Branch 0 taken 315301 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 315301 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 315301 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
630602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160
3/8
✓ Branch 0 taken 112053 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 112053 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 112053 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
224106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163 17276037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165
3/8
✓ Branch 0 taken 366729 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 366729 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 366729 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
733458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167
3/8
✓ Branch 0 taken 95939 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 95939 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 95939 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
191878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171
3/8
✓ Branch 0 taken 4644 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4644 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4644 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174 17052439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176
3/8
✓ Branch 0 taken 223598 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 223598 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 223598 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
447196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179 17047791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181
3/8
✓ Branch 0 taken 4648 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4648 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4648 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
9296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184 17040195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186
3/8
✓ Branch 0 taken 7596 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7596 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7596 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
15192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189 16662567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191
3/8
✓ Branch 0 taken 377628 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 377628 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 377628 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
755256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2192 0, 0, 0, 0, 0
2193 };
2194 16501519
2195 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
2196
3/8
✓ Branch 0 taken 161048 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 161048 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 161048 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
322096 0, pointed into by YYCONFLP. */
2197 static const short yyconfl[] =
2198 {
2199 16230284 0, 261, 0, 262, 0, 263, 0, 264, 0, 78,
2200 0, 235, 0
2201 };
2202
2203 271235
2204 271235 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2205 271235 If N is 0, then set CURRENT to the empty location which ends
2206
2/6
✓ Branch 0 taken 271235 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 271235 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
271235 the previous symbol: RHS[0] (always defined). */
2207
2208 #ifndef YYLLOC_DEFAULT
2209 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2210 15959049 do \
2211 if (N) \
2212
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 { \
2213 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2214 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2215 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2216 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2217 } \
2218 14587157 else \
2219 { \
2220
3/8
✓ Branch 0 taken 1010331 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1010331 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1010331 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2020662 (Current).first_line = (Current).last_line = \
2221 YYRHSLOC (Rhs, 0).last_line; \
2222 (Current).first_column = (Current).last_column = \
2223 81232 YYRHSLOC (Rhs, 0).last_column; \
2224 81232 } \
2225
3/10
✓ Branch 0 taken 81232 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 81232 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 81232 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
162464 while (0)
2226 #endif
2227
2228 20528 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
2229 20528
2230
3/10
✓ Branch 0 taken 20528 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 20528 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 20528 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
41056
2231 YYSTYPE yylval;
2232 YYLTYPE yylloc;
2233 5097
2234 5097 int yynerrs;
2235
3/10
✓ Branch 0 taken 5097 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5097 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 5097 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
10194 int yychar;
2236
2237 enum { YYENOMEM = -2 };
2238 7149
2239 7149 typedef enum { yyok, yyaccept, yyabort, yyerr, yynomem } YYRESULTTAG;
2240
3/10
✓ Branch 0 taken 7149 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7149 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7149 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
14298
2241 #define YYCHK(YYE) \
2242 do { \
2243 1149 YYRESULTTAG yychk_flag = YYE; \
2244 1149 if (yychk_flag != yyok) \
2245
3/10
✓ Branch 0 taken 1149 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1149 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1149 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2298 return yychk_flag; \
2246 } while (0)
2247
2248 9828 /* YYINITDEPTH -- initial size of the parser's stacks. */
2249 9828 #ifndef YYINITDEPTH
2250
3/10
✓ Branch 0 taken 9828 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9828 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9828 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
19656 # define YYINITDEPTH 200
2251 #endif
2252
2253 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2254 if the built-in stack extension method is used).
2255
2256 Do not make this value too large; the results are undefined if
2257 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
2258 7565 evaluated with infinite-precision integer arithmetic. */
2259 7565
2260
3/10
✓ Branch 0 taken 7565 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7565 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7565 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
15130 #ifndef YYMAXDEPTH
2261 # define YYMAXDEPTH 10000
2262 #endif
2263
2264 107652 /* Minimum number of free items on the stack allowed after an
2265 107652 allocation. This is to allow allocation and initialization
2266
3/10
✓ Branch 0 taken 107652 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 107652 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 107652 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
215304 to be completed by functions that call yyexpandGLRStack before the
2267 stack is expanded, thus insuring that all necessary pointers get
2268 properly redirected to new data. */
2269 #define YYHEADROOM 2
2270 1520
2271 1520 #ifndef YYSTACKEXPANDABLE
2272
3/10
✓ Branch 0 taken 1520 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1520 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1520 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
3040 # define YYSTACKEXPANDABLE 1
2273 #endif
2274
2275 119670 #if YYSTACKEXPANDABLE
2276 119670 # define YY_RESERVE_GLRSTACK(Yystack) \
2277
3/10
✓ Branch 0 taken 119670 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 119670 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 119670 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
239340 do { \
2278 if (Yystack->yyspaceLeft < YYHEADROOM) \
2279 yyexpandGLRStack (Yystack); \
2280 170 } while (0)
2281 170 #else
2282
3/10
✓ Branch 0 taken 170 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 170 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 170 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
340 # define YY_RESERVE_GLRSTACK(Yystack) \
2283 do { \
2284 if (Yystack->yyspaceLeft < YYHEADROOM) \
2285 yyMemoryExhausted (Yystack); \
2286 } while (0)
2287 #endif
2288
2289 /** State numbers. */
2290 14587157 typedef int yy_state_t;
2291
2292 /** Rule numbers. */
2293 typedef int yyRuleNum;
2294 1873444
2295 1873444 /** Item references. */
2296 1873444 typedef short yyItemNum;
2297
2298 typedef struct yyGLRState yyGLRState;
2299 typedef struct yyGLRStateSet yyGLRStateSet;
2300 typedef struct yySemanticOption yySemanticOption;
2301 1002297 typedef union yyGLRStackItem yyGLRStackItem;
2302
2/6
✓ Branch 0 taken 1002297 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1002297 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1002297 typedef struct yyGLRStack yyGLRStack;
2303
2304 struct yyGLRState
2305 {
2306 /** Type tag: always true. */
2307 2785 yybool yyisState;
2308 2785 /** Type tag for yysemantics. If true, yyval applies, otherwise
2309
1/2
✓ Branch 0 taken 2785 times.
✗ Branch 1 not taken.
2785 * yyfirstVal applies. */
2310 yybool yyresolved;
2311 /** Number of corresponding LALR(1) machine state. */
2312 yy_state_t yylrState;
2313 /** Preceding state in this stack */
2314 yyGLRState* yypred;
2315 /** Source position of the last token produced by my symbol */
2316 YYPTRDIFF_T yyposn;
2317 union {
2318 2785 /** First in a chain of alternative reductions producing the
2319 2785 * nonterminal corresponding to this state, threaded through
2320
2/6
✓ Branch 0 taken 2785 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2785 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2785 * yynext. */
2321 yySemanticOption* yyfirstVal;
2322 /** Semantic value for this state. */
2323 YYSTYPE yyval;
2324 } yysemantics;
2325 /** Source location for this state. */
2326 YYLTYPE yyloc;
2327 };
2328
2329 struct yyGLRStateSet
2330 {
2331 yyGLRState** yystates;
2332 /** During nondeterministic operation, yylookaheadNeeds tracks which
2333 1 * stacks have actually needed the current lookahead. During deterministic
2334 1 * operation, yylookaheadNeeds[0] is not maintained since it would merely
2335
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 * duplicate yychar != TOK_YYEMPTY. */
2336 yybool* yylookaheadNeeds;
2337 YYPTRDIFF_T yysize;
2338 YYPTRDIFF_T yycapacity;
2339 };
2340
2341 struct yySemanticOption
2342 {
2343 /** Type tag: always false. */
2344 yybool yyisState;
2345 /** Rule number for this reduction */
2346 yyRuleNum yyrule;
2347 /** The last RHS state in the list of states to be reduced. */
2348 yyGLRState* yystate;
2349 /** The lookahead for this reduction. */
2350 int yyrawchar;
2351 YYSTYPE yyval;
2352 YYLTYPE yyloc;
2353 /** Next sibling in chain of options. To facilitate merging,
2354 * options are chained in decreasing order by address. */
2355 yySemanticOption* yynext;
2356 };
2357
2358 /** Type of the items in the GLR stack. The yyisState field
2359 * indicates which item of the union is valid. */
2360 union yyGLRStackItem {
2361 yyGLRState yystate;
2362 yySemanticOption yyoption;
2363 };
2364
2365 struct yyGLRStack {
2366 int yyerrState;
2367 /* To compute the location of the error token. */
2368 5684069 yyGLRStackItem yyerror_range[3];
2369
2/6
✓ Branch 0 taken 5684069 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5684069 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5684069
2370 YYJMP_BUF yyexception_buffer;
2371 41211 yyGLRStackItem* yyitems;
2372
2/6
✓ Branch 0 taken 41211 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41211 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41211 yyGLRStackItem* yynextFree;
2373 YYPTRDIFF_T yyspaceLeft;
2374 222046 yyGLRState* yysplitPoint;
2375
4/10
✓ Branch 0 taken 222046 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 222046 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 222046 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 222046 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
222046 yyGLRState* yylastDeleted;
2376 yyGLRStateSet yytops;
2377 105260 };
2378 336235
2379 11438 #if YYSTACKEXPANDABLE
2380 static void yyexpandGLRStack (yyGLRStack* yystackp);
2381 11136 #endif
2382
3/8
✓ Branch 0 taken 11136 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11136 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 11136 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
11136
2383 _Noreturn static void
2384 56 yyFail (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root, const char* yymsg)
2385 {
2386
1/10
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
56 if (yymsg != YY_NULLPTR)
2387 yyerror (root, yymsg);
2388 56 YYLONGJMP (yystackp->yyexception_buffer, 1);
2389 }
2390
2391 _Noreturn static void
2392 3 yyMemoryExhausted (yyGLRStack* yystackp)
2393 3 {
2394 3 YYLONGJMP (yystackp->yyexception_buffer, 2);
2395
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3 }
2396 3
2397 105461 /** Accessing symbol of state YYSTATE. */
2398 static inline yysymbol_kind_t
2399 110964 yy_accessing_symbol (yy_state_t yystate)
2400 {
2401 110964 return YY_CAST (yysymbol_kind_t, yystos[yystate]);
2402 105260 }
2403
2/4
✓ Branch 0 taken 105260 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 105260 times.
✗ Branch 3 not taken.
105260
2404 #if 1
2405 /* The user-facing name of the symbol whose (internal) number is
2406 YYSYMBOL. No bounds checking. */
2407 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2408
2409 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2410
2/6
✓ Branch 0 taken 170782 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 170782 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
170782 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2411
2/6
✓ Branch 0 taken 165453 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 165453 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
165453 static const char *const yytname[] =
2412 {
2413 "\"end of file\"", "error", "\"invalid token\"", "SCRIPT", "ZCLASS",
2414 "FOR", "LOOP", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "RETURN",
2415 "IMPORT", "ZTRUE", "ZFALSE", "WHILE", "BREAK", "CONTINUE", "ZCONST",
2416 "DO", "TYPEDEF", "EXPECTERROR", "OPTIONVALUE", "ISINCLUDED", "DEFINE",
2417 "ENUM", "NAMESPACE", "USING", "ALWAYS", "ZASM", "INCLUDE", "INCLUDEPATH",
2418 "INCLUDEIF", "UNTIL", "UNLESS", "REPEAT", "INLINE", "INTERNAL", "STATIC",
2419 "CONSTEXPR", "NEW", "DELETE", "CASSERT", "ZAUTO", "ZVOID", "UNTYPED",
2420 "ZBOOL", "ZFLOAT", "ZCHAR", "ZLONG", "ZRGB", "COMMA", "DOT", "SEMICOLON",
2421 "SCOPERES", "COLON", "IN", "LPAREN", "RPAREN", "EMPTYBRACKETS",
2422 "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "QMARK", "ARROW",
2423 "INCREMENT", "DECREMENT", "NOT", "BITNOT", "EXPN", "TIMES", "DIVIDE",
2424 "MODULO", "PLUS", "MINUS", "LSHIFT", "RSHIFT", "LE", "LT", "GE", "GT",
2425 "EQ", "NE", "BITAND", "BITXOR", "BITOR", "AND", "OR", "XOR", "ASSIGN",
2426 "PLUSASSIGN", "MINUSASSIGN", "TIMESASSIGN", "DIVIDEASSIGN",
2427 "MODULOASSIGN", "LSHIFTASSIGN", "RSHIFTASSIGN", "BITANDASSIGN",
2428 "BITXORASSIGN", "BITORASSIGN", "ANDASSIGN", "ORASSIGN", "CAST", "RANGE",
2429 "RANGE_L", "RANGE_R", "RANGE_LR", "RANGE_N", "APPXEQUAL", "DOUBLEBANG",
2430 "PERCENT", "BITNOTASSIGN", "INVMOD", "DOUBLEADDR", "DOUBLESTAR",
2431 "HANDLE", "HANDLETOHANDLE", "ADDR", "HASH", "ENDLINE", "NEWLINE",
2432 "OPTION", "INHERIT", "IDENTIFIER", "QUOTEDSTRING", "CASESTRING",
2433 "IMPORTSTRING", "SINGLECHAR", "NUMBER", "LONGNUMBER", "$accept", "Init",
2434 "Global_List", "Global_Statement", "Namespace", "Namespace_Block_List",
2435 "Namespace_Statement", "Using", "AlwaysUsing", "Import", "IncludePath",
2436 "Option", "Statement_Assert", "DataTypeDef", "StandardDataTypedef",
2437 "EnumDataTypedef", "DataType", "DataType_Mods", "DataType_Base",
2438 "ScriptTypeDef", "Data", "Data_List", "Data_Element",
2439 "Data_Element_Array_List", "Single_Data_req_assign",
2440 11438 "Data_Element_Array_Element", "Data_Element_Array_Element_Size_List",
2441 11438 "Function", "Function_Typeless", "Function_Heading",
2442 11438 "FunctionTemplateList", "Function_Parameters_List",
2443 "Function_Parameters_Element", "Function_OptParams_List",
2444 "Function_VarArg_Element", "Class_Ident", "Class", "Class_Block",
2445 "Class_Block_List", "Class_Constructor", "Class_Destructor",
2446 "Class_Data", "Class_Block_Element", "Annotated_Script", "Script",
2447 71521 "Script_Type", "Script_Block", "Script_Block_List",
2448 71521 "Script_Block_Element", "Annotation_List", "Annotation",
2449 71521 "Block_Statement", "Statement", "Statement_NoSemicolon",
2450 71521 "Statement_Block", "Statement_Block_List", "Statement_If", "If_Body",
2451 "Statement_Switch", "Statement_Switch_Body", "Statement_Switch_Cases",
2452 11438 "Statement_For", "Statement_CommaList", "Statement_For_Standard",
2453
2/6
✓ Branch 0 taken 11438 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 11438 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
11438 "Statement_For_Each", "Annotated_Loop", "Statement_Loop",
2454 "Statement_Loop_Inf", "Statement_Loop_Range",
2455 "Statement_Loop_Range_Base", "Token_In", "Statement_While",
2456 "Statement_Do", "Statement_Repeat", "Statement_Return",
2457 "Statement_CompileError", "DataEnum", "Enum_Block", "ScopeRes",
2458 "Identifier_List", "Scoperes_Identifier_List", "Mixed_Identifier_List",
2459 "idlist_scopres", "idlist_dot", "Ambigious_Iden_List", "Identifier",
2460 "Func_Left", "Function_Call", "Function_Call_Parameters", "Expr_1",
2461 "Expr_2", "Expr_Arrow", "Expr_3", "Expr_4", "Expr_5", "Expr_6", "Expr_7",
2462 "Expr_8", "Expr_9", "Expr_10", "Expr_11", "Expr_12", "Expr_13",
2463 "Expr_14", "Expr_15", "Expr_16", "Expr_17", "Expr_18", "Expression",
2464 "Statement_Expression", "Expression_Constant", "Expression_Const_Range",
2465 "Expression_Range", "Literal", "QuotedString", "Literal_String",
2466 "Literal_Bool", "Literal_Array", "Literal_Array_Body", YY_NULLPTR
2467 };
2468
2469 static const char *
2470 yysymbol_name (yysymbol_kind_t yysymbol)
2471 {
2472 return yytname[yysymbol];
2473 }
2474 #endif
2475
2476 /** Left-hand-side symbol for rule #YYRULE. */
2477 static inline yysymbol_kind_t
2478 530212022 yylhsNonterm (yyRuleNum yyrule)
2479 {
2480 530212022 return YY_CAST (yysymbol_kind_t, yyr1[yyrule]);
2481 }
2482
2483 #if YYDEBUG
2484
2485 # ifndef YYFPRINTF
2486 # define YYFPRINTF fprintf
2487 # endif
2488
2489 # define YY_FPRINTF \
2490 YY_IGNORE_USELESS_CAST_BEGIN YY_FPRINTF_
2491
2492 # define YY_FPRINTF_(Args) \
2493 do { \
2494 YYFPRINTF Args; \
2495 YY_IGNORE_USELESS_CAST_END \
2496 } while (0)
2497
2498 # define YY_DPRINTF \
2499 YY_IGNORE_USELESS_CAST_BEGIN YY_DPRINTF_
2500
2501 # define YY_DPRINTF_(Args) \
2502 do { \
2503 if (yydebug) \
2504 YYFPRINTF Args; \
2505 YY_IGNORE_USELESS_CAST_END \
2506 } while (0)
2507
2508
2509 /* YYLOCATION_PRINT -- Print the location on the stream.
2510 This macro was not mandated originally: define only if we know
2511 we won't break user code: when these are the locations we know. */
2512
2513 # ifndef YYLOCATION_PRINT
2514
2515 # if defined YY_LOCATION_PRINT
2516
2517 /* Temporary convenience wrapper in case some people defined the
2518 undocumented and private YY_LOCATION_PRINT macros. */
2519 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2520
2521 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2522
2523 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2524
2525 YY_ATTRIBUTE_UNUSED
2526 static int
2527 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2528 {
2529 int res = 0;
2530 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2531 if (0 <= yylocp->first_line)
2532 {
2533 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2534 if (0 <= yylocp->first_column)
2535 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2536 }
2537 if (0 <= yylocp->last_line)
2538 {
2539 if (yylocp->first_line < yylocp->last_line)
2540 {
2541 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2542 if (0 <= end_col)
2543 res += YYFPRINTF (yyo, ".%d", end_col);
2544 }
2545 else if (0 <= end_col && yylocp->first_column < end_col)
2546 res += YYFPRINTF (yyo, "-%d", end_col);
2547 }
2548 return res;
2549 }
2550
2551 # define YYLOCATION_PRINT yy_location_print_
2552
2553 /* Temporary convenience wrapper in case some people defined the
2554 undocumented and private YY_LOCATION_PRINT macros. */
2555 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2556
2557 # else
2558
2559 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2560 /* Temporary convenience wrapper in case some people defined the
2561 undocumented and private YY_LOCATION_PRINT macros. */
2562 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2563
2564 # endif
2565 # endif /* !defined YYLOCATION_PRINT */
2566
2567
2568
2569 /*-----------------------------------.
2570 | Print this symbol's value on YYO. |
2571 `-----------------------------------*/
2572
2573 static void
2574 yy_symbol_value_print (FILE *yyo,
2575 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2576 {
2577 FILE *yyoutput = yyo;
2578 YY_USE (yyoutput);
2579 YY_USE (yylocationp);
2580 YY_USE (root);
2581 if (!yyvaluep)
2582 return;
2583 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2584 YY_USE (yykind);
2585 YY_IGNORE_MAYBE_UNINITIALIZED_END
2586 }
2587
2588
2589 /*---------------------------.
2590 | Print this symbol on YYO. |
2591 `---------------------------*/
2592
2593 static void
2594 yy_symbol_print (FILE *yyo,
2595 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2596 {
2597 YYFPRINTF (yyo, "%s %s (",
2598 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2599
2600 YYLOCATION_PRINT (yyo, yylocationp);
2601 YYFPRINTF (yyo, ": ");
2602 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, root);
2603 YYFPRINTF (yyo, ")");
2604 }
2605
2606 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2607 do { \
2608 if (yydebug) \
2609 { \
2610 YY_FPRINTF ((stderr, "%s ", Title)); \
2611 yy_symbol_print (stderr, Kind, Value, Location, root); \
2612 YY_FPRINTF ((stderr, "\n")); \
2613 } \
2614 } while (0)
2615
2616 static inline void
2617 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
2618 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root);
2619
2620 # define YY_REDUCE_PRINT(Args) \
2621 do { \
2622 if (yydebug) \
2623 yy_reduce_print Args; \
2624 } while (0)
2625
2626 /* Nonzero means print parse trace. It is left uninitialized so that
2627 multiple parsers can coexist. */
2628 int yydebug;
2629
2630 static void yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
2631 YY_ATTRIBUTE_UNUSED;
2632 static void yypdumpstack (yyGLRStack* yystackp)
2633 YY_ATTRIBUTE_UNUSED;
2634
2635 #else /* !YYDEBUG */
2636
2637 # define YY_DPRINTF(Args) do {} while (yyfalse)
2638 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2639 # define YY_REDUCE_PRINT(Args)
2640
2641 #endif /* !YYDEBUG */
2642
2643 #ifndef yystrlen
2644 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2645 #endif
2646
2647 #ifndef yystpcpy
2648 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2649 # define yystpcpy stpcpy
2650 # else
2651 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2652 YYDEST. */
2653 static char *
2654 yystpcpy (char *yydest, const char *yysrc)
2655 {
2656 char *yyd = yydest;
2657 const char *yys = yysrc;
2658
2659 while ((*yyd++ = *yys++) != '\0')
2660 continue;
2661
2662 return yyd - 1;
2663 }
2664 # endif
2665 #endif
2666
2667 #ifndef yytnamerr
2668 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2669 quotes and backslashes, so that it's suitable for yyerror. The
2670 heuristic is that double-quoting is unnecessary unless the string
2671 contains an apostrophe, a comma, or backslash (other than
2672 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2673 null, do not copy; instead, return the length of what the result
2674 would have been. */
2675 static YYPTRDIFF_T
2676 318 yytnamerr (char *yyres, const char *yystr)
2677 {
2678
2/2
✓ Branch 0 taken 314 times.
✓ Branch 1 taken 4 times.
318 if (*yystr == '"')
2679 {
2680 4 YYPTRDIFF_T yyn = 0;
2681 4 char const *yyp = yystr;
2682
2683 48 for (;;)
2684
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
48 switch (*++yyp)
2685 {
2686 case '\'':
2687 case ',':
2688 goto do_not_strip_quotes;
2689
2690 case '\\':
2691 if (*++yyp != '\\')
2692 goto do_not_strip_quotes;
2693 else
2694 goto append;
2695
2696 append:
2697 default:
2698
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 22 times.
44 if (yyres)
2699 22 yyres[yyn] = *yyp;
2700 44 yyn++;
2701 44 break;
2702
2703 case '"':
2704
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if (yyres)
2705 2 yyres[yyn] = '\0';
2706 4 return yyn;
2707 }
2708 do_not_strip_quotes: ;
2709 }
2710
2711
2/2
✓ Branch 0 taken 157 times.
✓ Branch 1 taken 157 times.
314 if (yyres)
2712 157 return yystpcpy (yyres, yystr) - yyres;
2713 else
2714 157 return yystrlen (yystr);
2715 318 }
2716 #endif
2717
2718
2719 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2720 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2721 * containing the pointer to the next state in the chain. */
2722 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2723 static void
2724 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2725 {
2726 int i;
2727 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2728 for (i = yylow0-1; i >= yylow1; i -= 1)
2729 {
2730 #if YYDEBUG
2731 yyvsp[i].yystate.yylrState = s->yylrState;
2732 #endif
2733 yyvsp[i].yystate.yyresolved = s->yyresolved;
2734 if (s->yyresolved)
2735 yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval;
2736 else
2737 /* The effect of using yyval or yyloc (in an immediate rule) is
2738 * undefined. */
2739 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2740 yyvsp[i].yystate.yyloc = s->yyloc;
2741 s = yyvsp[i].yystate.yypred = s->yypred;
2742 }
2743 }
2744
2745
2746 /** If yychar is empty, fetch the next token. */
2747 static inline yysymbol_kind_t
2748 382651393 yygetToken (int *yycharp, std::unique_ptr<ZScript::ASTFile>& root)
2749 {
2750 yysymbol_kind_t yytoken;
2751 382651393 YY_USE (root);
2752
2/2
✓ Branch 0 taken 285321761 times.
✓ Branch 1 taken 97329632 times.
382651393 if (*yycharp == TOK_YYEMPTY)
2753 {
2754 97329632 YY_DPRINTF ((stderr, "Reading a token\n"));
2755 97329632 *yycharp = yylex ();
2756 97329632 }
2757
2/2
✓ Branch 0 taken 110519 times.
✓ Branch 1 taken 382540874 times.
382651393 if (*yycharp <= TOK_YYEOF)
2758 {
2759 110519 *yycharp = TOK_YYEOF;
2760 110519 yytoken = YYSYMBOL_YYEOF;
2761 110519 YY_DPRINTF ((stderr, "Now at end of input.\n"));
2762 110519 }
2763 else
2764 {
2765
2/4
✓ Branch 0 taken 382540874 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 382540874 times.
✗ Branch 3 not taken.
382540874 yytoken = YYTRANSLATE (*yycharp);
2766 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2767 }
2768 382651393 return yytoken;
2769 }
2770
2771 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2772 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2773 * For convenience, always return YYLOW1. */
2774 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2775 YY_ATTRIBUTE_UNUSED;
2776 static inline int
2777 1093141457 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2778 {
2779
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1093141457 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1093141457 if (!yynormal && yylow1 < *yylow)
2780 {
2781 yyfillin (yyvsp, *yylow, yylow1);
2782 *yylow = yylow1;
2783 }
2784 1093141457 return yylow1;
2785 }
2786
2787 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2788 * and top stack item YYVSP. YYLVALP points to place to put semantic
2789 * value ($$), and yylocp points to place for location information
2790 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2791 * yyerr for YYERROR, yyabort for YYABORT, yynomem for YYNOMEM. */
2792 static YYRESULTTAG
2793 530189616 yyuserAction (yyRuleNum yyrule, int yyrhslen, yyGLRStackItem* yyvsp,
2794 yyGLRStack* yystackp, YYPTRDIFF_T yyk,
2795 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
2796 {
2797 530189616 const yybool yynormal YY_ATTRIBUTE_UNUSED = yystackp->yysplitPoint == YY_NULLPTR;
2798 530189616 int yylow = 1;
2799 YY_USE (yyvalp);
2800 YY_USE (yylocp);
2801 530189616 YY_USE (root);
2802 YY_USE (yyk);
2803 YY_USE (yyrhslen);
2804 # undef yyerrok
2805 # define yyerrok (yystackp->yyerrState = 0)
2806 # undef YYACCEPT
2807 # define YYACCEPT return yyaccept
2808 # undef YYABORT
2809 # define YYABORT return yyabort
2810 # undef YYNOMEM
2811 # define YYNOMEM return yynomem
2812 # undef YYERROR
2813 # define YYERROR return yyerrok, yyerr
2814 # undef YYRECOVERING
2815 # define YYRECOVERING() (yystackp->yyerrState != 0)
2816 # undef yyclearin
2817 # define yyclearin (yychar = TOK_YYEMPTY)
2818 # undef YYFILL
2819 # define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
2820 # undef YYBACKUP
2821 # define YYBACKUP(Token, Value) \
2822 return yyerror (root, YY_("syntax error: cannot back up")), \
2823 yyerrok, yyerr
2824
2825
2/2
✓ Branch 0 taken 529924912 times.
✓ Branch 1 taken 264704 times.
530189616 if (yyrhslen == 0)
2826 264704 *yyvalp = yyval_default;
2827 else
2828 529924912 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;
2829 /* Default location. */
2830
2/2
✓ Branch 0 taken 529924912 times.
✓ Branch 1 taken 264704 times.
530189616 YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
2831 530189616 yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
2832 /* If yyk == -1, we are running a deferred action on a temporary
2833 stack. In that case, YY_REDUCE_PRINT must not play with YYFILL,
2834 so pretend the stack is "normal". */
2835 YY_REDUCE_PRINT ((yynormal || yyk == -1, yyvsp, yyk, yyrule, root));
2836
276/385
✗ Branch 0 not taken.
✓ Branch 1 taken 55260 times.
✓ Branch 2 taken 3943877 times.
✓ Branch 3 taken 3638 times.
✓ Branch 4 taken 55315 times.
✓ Branch 5 taken 53714 times.
✓ Branch 6 taken 1160 times.
✓ Branch 7 taken 3755 times.
✓ Branch 8 taken 37031 times.
✓ Branch 9 taken 2466 times.
✓ Branch 10 taken 2736481 times.
✓ Branch 11 taken 988449 times.
✓ Branch 12 taken 3465 times.
✓ Branch 13 taken 10 times.
✓ Branch 14 taken 32892 times.
✓ Branch 15 taken 84448 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 6 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 4683 times.
✓ Branch 22 taken 33174 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 4684 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 928 times.
✓ Branch 27 taken 47 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 307 times.
✓ Branch 30 taken 36509 times.
✓ Branch 31 taken 26 times.
✓ Branch 32 taken 28 times.
✓ Branch 33 taken 4 times.
✓ Branch 34 taken 7 times.
✓ Branch 35 taken 1 times.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 7 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 34897 times.
✓ Branch 41 taken 18817 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 1160 times.
✓ Branch 44 taken 3646 times.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 9 times.
✓ Branch 58 taken 11075 times.
✓ Branch 59 taken 26005 times.
✓ Branch 60 taken 11075 times.
✓ Branch 61 taken 26005 times.
✓ Branch 62 taken 274969 times.
✓ Branch 63 taken 9840699 times.
✓ Branch 64 taken 689756 times.
✓ Branch 65 taken 9150943 times.
✓ Branch 66 taken 30 times.
✓ Branch 67 taken 507545 times.
✓ Branch 68 taken 109158 times.
✓ Branch 69 taken 813449 times.
✓ Branch 70 taken 4726742 times.
✓ Branch 71 taken 542604 times.
✓ Branch 72 taken 41545 times.
✓ Branch 73 taken 10082 times.
✓ Branch 74 taken 3089544 times.
✓ Branch 75 taken 2466 times.
✓ Branch 76 taken 1115454 times.
✓ Branch 77 taken 4559977 times.
✓ Branch 78 taken 2837 times.
✓ Branch 79 taken 4559977 times.
✓ Branch 80 taken 3390403 times.
✓ Branch 81 taken 2797561 times.
✓ Branch 82 taken 298641 times.
✓ Branch 83 taken 6187964 times.
✓ Branch 84 taken 2 times.
✓ Branch 85 taken 34697 times.
✓ Branch 86 taken 263944 times.
✗ Branch 87 not taken.
✓ Branch 88 taken 34697 times.
✓ Branch 89 taken 15618 times.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✓ Branch 92 taken 669108 times.
✓ Branch 93 taken 1603810 times.
✓ Branch 94 taken 934715 times.
✓ Branch 95 taken 702810 times.
✓ Branch 96 taken 1 times.
✓ Branch 97 taken 1618557 times.
✓ Branch 98 taken 19022 times.
✓ Branch 99 taken 19022 times.
✗ Branch 100 not taken.
✓ Branch 101 taken 2048741 times.
✓ Branch 102 taken 1315480 times.
✓ Branch 103 taken 120543 times.
✓ Branch 104 taken 928 times.
✓ Branch 105 taken 200628 times.
✓ Branch 106 taken 3659717 times.
✓ Branch 107 taken 174022 times.
✓ Branch 108 taken 120543 times.
✓ Branch 109 taken 928 times.
✓ Branch 110 taken 32897 times.
✓ Branch 111 taken 32896 times.
✓ Branch 112 taken 32891 times.
✓ Branch 113 taken 5 times.
✓ Branch 114 taken 1677806 times.
✗ Branch 115 not taken.
✓ Branch 116 taken 830 times.
✓ Branch 117 taken 4 times.
✓ Branch 118 taken 10 times.
✗ Branch 119 not taken.
✓ Branch 120 taken 32882 times.
✗ Branch 121 not taken.
✓ Branch 122 taken 33702 times.
✓ Branch 123 taken 33712 times.
✓ Branch 124 taken 4 times.
✓ Branch 125 taken 1103218 times.
✓ Branch 126 taken 1103218 times.
✓ Branch 127 taken 574598 times.
✗ Branch 128 not taken.
✗ Branch 129 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✓ Branch 133 taken 38 times.
✓ Branch 134 taken 3529 times.
✓ Branch 135 taken 6000 times.
✓ Branch 136 taken 3528 times.
✓ Branch 137 taken 1 times.
✓ Branch 138 taken 797 times.
✗ Branch 139 not taken.
✓ Branch 140 taken 3529 times.
✗ Branch 141 not taken.
✓ Branch 142 taken 62 times.
✓ Branch 143 taken 4254 times.
✓ Branch 144 taken 1 times.
✓ Branch 145 taken 1 times.
✓ Branch 146 taken 6 times.
✓ Branch 147 taken 2 times.
✗ Branch 148 not taken.
✓ Branch 149 taken 153 times.
✓ Branch 150 taken 39 times.
✓ Branch 151 taken 192 times.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✓ Branch 157 taken 1369554 times.
✓ Branch 158 taken 566463 times.
✓ Branch 159 taken 1 times.
✓ Branch 160 taken 931 times.
✗ Branch 161 not taken.
✓ Branch 162 taken 1684214 times.
✓ Branch 163 taken 505061 times.
✓ Branch 164 taken 899946 times.
✓ Branch 165 taken 56795 times.
✓ Branch 166 taken 175720 times.
✓ Branch 167 taken 1 times.
✓ Branch 168 taken 6770 times.
✓ Branch 169 taken 648 times.
✗ Branch 170 not taken.
✓ Branch 171 taken 1583283 times.
✓ Branch 172 taken 209303 times.
✗ Branch 173 not taken.
✓ Branch 174 taken 24474 times.
✗ Branch 175 not taken.
✓ Branch 176 taken 9157 times.
✗ Branch 177 not taken.
✗ Branch 178 not taken.
✓ Branch 179 taken 153446 times.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✓ Branch 182 taken 189229 times.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✓ Branch 195 taken 8761 times.
✗ Branch 196 not taken.
✓ Branch 197 taken 1439559 times.
✓ Branch 198 taken 217 times.
✓ Branch 199 taken 2235236 times.
✗ Branch 200 not taken.
✓ Branch 201 taken 2117977 times.
✓ Branch 202 taken 8 times.
✓ Branch 203 taken 849972 times.
✓ Branch 204 taken 49974 times.
✓ Branch 205 taken 2 times.
✗ Branch 206 not taken.
✓ Branch 207 taken 613476 times.
✓ Branch 208 taken 286468 times.
✓ Branch 209 taken 56795 times.
✓ Branch 210 taken 621580 times.
✓ Branch 211 taken 56795 times.
✓ Branch 212 taken 36559 times.
✓ Branch 213 taken 1859 times.
✓ Branch 214 taken 929 times.
✗ Branch 215 not taken.
✓ Branch 216 taken 632820 times.
✓ Branch 217 taken 1856 times.
✗ Branch 218 not taken.
✓ Branch 219 taken 43699 times.
✓ Branch 220 taken 175715 times.
✓ Branch 221 taken 5 times.
✗ Branch 222 not taken.
✓ Branch 223 taken 175718 times.
✓ Branch 224 taken 175715 times.
✗ Branch 225 not taken.
✓ Branch 226 taken 5 times.
✗ Branch 227 not taken.
✗ Branch 228 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 231 taken 1 times.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✓ Branch 234 taken 1 times.
✗ Branch 235 not taken.
✓ Branch 236 taken 1 times.
✗ Branch 237 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 240 not taken.
✓ Branch 241 taken 6 times.
✗ Branch 242 not taken.
✓ Branch 243 taken 6765 times.
✗ Branch 244 not taken.
✓ Branch 245 taken 5 times.
✗ Branch 246 not taken.
✓ Branch 247 taken 646 times.
✗ Branch 248 not taken.
✓ Branch 249 taken 2 times.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✓ Branch 252 taken 1541517 times.
✓ Branch 253 taken 41767 times.
✗ Branch 254 not taken.
✓ Branch 255 taken 83531 times.
✓ Branch 256 taken 1856 times.
✓ Branch 257 taken 1513758 times.
✓ Branch 258 taken 111392 times.
✓ Branch 259 taken 979 times.
✗ Branch 260 not taken.
✓ Branch 261 taken 976 times.
✓ Branch 262 taken 11 times.
✓ Branch 263 taken 17273102 times.
✓ Branch 264 taken 3 times.
✓ Branch 265 taken 4688 times.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✓ Branch 271 taken 979 times.
✗ Branch 272 not taken.
✗ Branch 273 not taken.
✓ Branch 274 taken 11 times.
✓ Branch 275 taken 17278780 times.
✓ Branch 276 taken 27146480 times.
✓ Branch 277 taken 230179 times.
✓ Branch 278 taken 1429870 times.
✓ Branch 279 taken 59 times.
✓ Branch 280 taken 15 times.
✓ Branch 281 taken 83300 times.
✓ Branch 282 taken 1576748 times.
✓ Branch 283 taken 1336148 times.
✓ Branch 284 taken 1576764 times.
✓ Branch 285 taken 11117020 times.
✓ Branch 286 taken 6411395 times.
✓ Branch 287 taken 1673133 times.
✓ Branch 288 taken 19201548 times.
✓ Branch 289 taken 4160 times.
✓ Branch 290 taken 3306283 times.
✓ Branch 291 taken 19201548 times.
✓ Branch 292 taken 48739 times.
✓ Branch 293 taken 19026 times.
✓ Branch 294 taken 1660122 times.
✓ Branch 295 taken 965024 times.
✓ Branch 296 taken 3076104 times.
✓ Branch 297 taken 20631491 times.
✓ Branch 298 taken 107316 times.
✓ Branch 299 taken 55251 times.
✓ Branch 300 taken 328935 times.
✓ Branch 301 taken 57187 times.
✓ Branch 302 taken 8757 times.
✓ Branch 303 taken 20631491 times.
✗ Branch 304 not taken.
✓ Branch 305 taken 20330665 times.
✓ Branch 306 taken 177109 times.
✓ Branch 307 taken 67586 times.
✓ Branch 308 taken 56131 times.
✓ Branch 309 taken 18829351 times.
✓ Branch 310 taken 852300 times.
✓ Branch 311 taken 649014 times.
✓ Branch 312 taken 18707579 times.
✓ Branch 313 taken 48893 times.
✓ Branch 314 taken 72879 times.
✓ Branch 315 taken 17743349 times.
✓ Branch 316 taken 454583 times.
✓ Branch 317 taken 82293 times.
✓ Branch 318 taken 315301 times.
✓ Branch 319 taken 112053 times.
✓ Branch 320 taken 17276037 times.
✓ Branch 321 taken 366729 times.
✓ Branch 322 taken 95939 times.
✗ Branch 323 not taken.
✓ Branch 324 taken 4644 times.
✓ Branch 325 taken 17052439 times.
✓ Branch 326 taken 223598 times.
✓ Branch 327 taken 17047791 times.
✓ Branch 328 taken 4648 times.
✓ Branch 329 taken 17040195 times.
✓ Branch 330 taken 7596 times.
✓ Branch 331 taken 16662567 times.
✓ Branch 332 taken 377628 times.
✓ Branch 333 taken 16501519 times.
✓ Branch 334 taken 161048 times.
✓ Branch 335 taken 16230284 times.
✓ Branch 336 taken 271235 times.
✓ Branch 337 taken 15959049 times.
✓ Branch 338 taken 3 times.
✓ Branch 339 taken 14587157 times.
✓ Branch 340 taken 1010331 times.
✓ Branch 341 taken 81232 times.
✓ Branch 342 taken 20528 times.
✓ Branch 343 taken 5097 times.
✓ Branch 344 taken 7149 times.
✓ Branch 345 taken 1149 times.
✓ Branch 346 taken 9828 times.
✗ Branch 347 not taken.
✓ Branch 348 taken 7565 times.
✓ Branch 349 taken 107652 times.
✓ Branch 350 taken 1520 times.
✓ Branch 351 taken 119670 times.
✓ Branch 352 taken 170 times.
✗ Branch 353 not taken.
✓ Branch 354 taken 14587157 times.
✓ Branch 355 taken 1873444 times.
✓ Branch 356 taken 1002297 times.
✓ Branch 357 taken 2785 times.
✓ Branch 358 taken 2785 times.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✓ Branch 361 taken 1 times.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 366 not taken.
✓ Branch 367 taken 5684069 times.
✓ Branch 368 taken 41211 times.
✓ Branch 369 taken 222046 times.
✓ Branch 370 taken 105260 times.
✓ Branch 371 taken 336235 times.
✓ Branch 372 taken 11438 times.
✓ Branch 373 taken 11136 times.
✗ Branch 374 not taken.
✓ Branch 375 taken 3 times.
✓ Branch 376 taken 105461 times.
✓ Branch 377 taken 105260 times.
✓ Branch 378 taken 170782 times.
✓ Branch 379 taken 165453 times.
✗ Branch 380 not taken.
✗ Branch 381 not taken.
✓ Branch 382 taken 11438 times.
✓ Branch 383 taken 71521 times.
✓ Branch 384 taken 11438 times.
530189616 switch (yyrule)
2837 {
2838 case 2: /* Init: Global_List */
2839 #line 306 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2840 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2841 #line 2842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2842 break;
2843
2844 case 3: /* Global_List: Global_List Global_Statement */
2845 #line 312 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2846 {
2847 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2848 root->addDeclaration(declaration);}
2849 #line 2850 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2850 break;
2851
2852 case 4: /* Global_List: Global_List Option */
2853 #line 315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2854 {
2855 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2856 root->options.push_back(option);
2857 if (root->hasDeclarations())
2858 yywarn("WARNING: Options should come before everything else.");}
2859 #line 2860 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2860 break;
2861
2862 case 5: /* Global_List: %empty */
2863 #line 320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2864 {root.reset(new ASTFile(noloc));}
2865 #line 2866 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2866 break;
2867
2868 case 6: /* Global_Statement: Import */
2869 #line 324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2870 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2871 #line 2872 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2872 break;
2873
2874 case 7: /* Global_Statement: IncludePath */
2875 #line 325 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2876 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2877 #line 2878 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2878 break;
2879
2880 case 8: /* Global_Statement: Namespace */
2881 #line 326 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2882 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2883 #line 2884 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2884 break;
2885
2886 case 9: /* Global_Statement: DataTypeDef SEMICOLON */
2887 #line 327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2888 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2889 #line 2890 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2890 break;
2891
2892 case 10: /* Global_Statement: ScriptTypeDef SEMICOLON */
2893 #line 328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2894 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2895 #line 2896 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2896 break;
2897
2898 case 11: /* Global_Statement: Data SEMICOLON */
2899 #line 329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2900 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2901 #line 2902 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2902 break;
2903
2904 case 12: /* Global_Statement: Function */
2905 #line 330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2906 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2907 #line 2908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2908 break;
2909
2910 case 13: /* Global_Statement: Script */
2911 #line 331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2912 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2913 #line 2914 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2914 break;
2915
2916 case 14: /* Global_Statement: Annotated_Script */
2917 #line 332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2918 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2919 #line 2920 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2920 break;
2921
2922 case 15: /* Global_Statement: Class */
2923 #line 333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2924 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2925 #line 2926 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2926 break;
2927
2928 case 16: /* Global_Statement: DataEnum SEMICOLON */
2929 #line 334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2930 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2931 #line 2932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2932 break;
2933
2934 case 17: /* Global_Statement: Using SEMICOLON */
2935 #line 335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2936 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2937 #line 2938 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2938 break;
2939
2940 case 18: /* Global_Statement: AlwaysUsing SEMICOLON */
2941 #line 336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2942 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2943 #line 2944 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2944 break;
2945
2946 case 19: /* Global_Statement: Statement_Assert SEMICOLON */
2947 #line 337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2948 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2949 #line 2950 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2950 break;
2951
2952 case 20: /* Global_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Global_Statement */
2953 #line 338 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2954 {
2955 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
2956 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2957 declaration->compileErrorCatches.push_back(errorId);
2958 (*yyvalp) = declaration;}
2959 #line 2960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2960 break;
2961
2962 case 21: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE RBRACE */
2963 #line 349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2964 {
2965 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
2966 ASTNamespace* namesp = new ASTNamespace((*yylocp));
2967 namesp->identifier = idens->componentNodes.front()->clone();
2968 if (!ParserHelper::isValidIdentifier(namesp->getName()))
2969 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,namesp->getName().c_str());
2970 auto& components = idens->componentNodes;
2971 if(components.size() > 1)
2972 for(auto it = components.begin() + 1;
2973 it != components.end(); ++it)
2974 {
2975 ASTNamespace* subsp = new ASTNamespace((*yylocp));
2976 subsp->identifier = (*it)->clone();
2977 if (!ParserHelper::isValidIdentifier(subsp->getName()))
2978 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,subsp->getName().c_str());
2979 namesp->namespaces.push_back(subsp);
2980 }
2981 delete idens;
2982 (*yyvalp) = namesp;
2983 }
2984 #line 2985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2985 break;
2986
2987 case 22: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE Namespace_Block_List RBRACE */
2988 #line 369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2989 {
2990 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
2991 auto& components = idens->componentNodes;
2992 int32_t size = components.size();
2993 if(size == 1)
2994 {
2995 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
2996 namesp->identifier = components.front()->clone();
2997 namesp->location = (*yylocp);
2998 delete idens;
2999 (*yyvalp) = namesp;
3000 }
3001 else if(size == 2)
3002 {
3003 ASTNamespace* top = new ASTNamespace((*yylocp));
3004 top->identifier = components.front()->clone();
3005 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3006 namesp->identifier = components[1]->clone();
3007 namesp->location = (*yylocp);
3008 top->namespaces.push_back(namesp);
3009 delete idens;
3010 (*yyvalp) = top;
3011 }
3012 else
3013 {
3014 ASTNamespace* top = new ASTNamespace((*yylocp));
3015 top->identifier = components.front()->clone();
3016 ASTNamespace* temp = top;
3017 ASTNamespace* temp2;
3018 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3019 namesp->identifier = components.back()->clone();
3020 components.pop_back();
3021 namesp->location = (*yylocp);
3022 for(auto it = components.begin() + 1;
3023 it != components.end(); ++it)
3024 {
3025 temp2 = new ASTNamespace((*yylocp));
3026 temp->identifier = (*it)->clone();
3027 temp->namespaces.push_back(temp2);
3028 temp = temp2;
3029 }
3030 temp->namespaces.push_back(namesp);
3031 delete idens;
3032 (*yyvalp) = top;
3033 }
3034
3035 auto ns = (ASTNamespace*)(*yyvalp);
3036 if (!ParserHelper::isValidIdentifier(ns->getName()))
3037 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,ns->getName().c_str());
3038 }
3039 #line 3040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3040 break;
3041
3042 case 23: /* Namespace_Block_List: Namespace_Block_List Namespace_Statement */
3043 #line 422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3044 {
3045 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3046 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3047 namesp->addDeclaration(*declaration);
3048 namesp->location = (*yylocp);
3049 (*yyvalp) = namesp;}
3050 #line 3051 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3051 break;
3052
3053 case 24: /* Namespace_Block_List: Namespace_Block_List Option */
3054 #line 428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3055 {
3056 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3057 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3058 namesp->options.push_back(option);
3059 namesp->location = (*yylocp);
3060 (*yyvalp) = namesp;
3061 if (!namesp->variables.empty()
3062 || !namesp->functions.empty()
3063 || !namesp->dataTypes.empty()
3064 || !namesp->scriptTypes.empty()) {
3065 yywarn("WARNING: Options should come before everything else.");}}
3066 #line 3067 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3067 break;
3068
3069 case 25: /* Namespace_Block_List: Namespace_Statement */
3070 #line 439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3071 {
3072 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3073 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3074 namesp->addDeclaration(*declaration);
3075 (*yyvalp) = namesp;}
3076 #line 3077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3077 break;
3078
3079 case 26: /* Namespace_Block_List: Option */
3080 #line 444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3081 {
3082 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3083 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3084 namesp->options.push_back(option);
3085 (*yyvalp) = namesp;}
3086 #line 3087 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3087 break;
3088
3089 case 27: /* Namespace_Statement: Namespace */
3090 #line 452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3091 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3092 #line 3093 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3093 break;
3094
3095 case 28: /* Namespace_Statement: DataTypeDef SEMICOLON */
3096 #line 453 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3097 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3098 #line 3099 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3099 break;
3100
3101 case 29: /* Namespace_Statement: ScriptTypeDef SEMICOLON */
3102 #line 454 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3103 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3104 #line 3105 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3105 break;
3106
3107 case 30: /* Namespace_Statement: Data SEMICOLON */
3108 #line 455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3109 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3110 #line 3111 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3111 break;
3112
3113 case 31: /* Namespace_Statement: Function */
3114 #line 456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3115 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3116 #line 3117 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3117 break;
3118
3119 case 32: /* Namespace_Statement: Script */
3120 #line 457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3121 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3122 #line 3123 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3123 break;
3124
3125 case 33: /* Namespace_Statement: Annotated_Script */
3126 #line 458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3127 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3128 #line 3129 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3129 break;
3130
3131 case 34: /* Namespace_Statement: Class */
3132 #line 459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3133 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3134 #line 3135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3135 break;
3136
3137 case 35: /* Namespace_Statement: DataEnum SEMICOLON */
3138 #line 460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3139 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3140 #line 3141 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3141 break;
3142
3143 case 36: /* Namespace_Statement: Using SEMICOLON */
3144 #line 461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3145 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3146 #line 3147 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3147 break;
3148
3149 case 37: /* Namespace_Statement: Statement_Assert SEMICOLON */
3150 #line 462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3151 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3152 #line 3153 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3153 break;
3154
3155 case 38: /* Namespace_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Namespace_Statement */
3156 #line 463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3157 {
3158 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3159 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3160 declaration->compileErrorCatches.push_back(errorId);
3161 (*yyvalp) = declaration;}
3162 #line 3163 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3163 break;
3164
3165 case 39: /* Using: USING NAMESPACE Scoperes_Identifier_List */
3166 #line 473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3167 {
3168 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3169 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp));
3170 }
3171 #line 3172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3172 break;
3173
3174 case 40: /* AlwaysUsing: ALWAYS USING NAMESPACE Scoperes_Identifier_List */
3175 #line 479 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3176 {
3177 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3178 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp), true);
3179 }
3180 #line 3181 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3181 break;
3182
3183 case 41: /* Import: IMPORT IMPORTSTRING */
3184 #line 488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3185 {
3186 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3187 (*yyvalp) = new ASTImportDecl(str->getValue(), (*yylocp));
3188 delete str;}
3189 #line 3190 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3190 break;
3191
3192 case 42: /* Import: HASH INCLUDE IMPORTSTRING */
3193 #line 492 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3194 {
3195 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3196 (*yyvalp) = new ASTImportDecl(str->getValue(), (*yylocp), true);
3197 delete str;}
3198 #line 3199 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3199 break;
3200
3201 case 43: /* Import: HASH INCLUDEIF LPAREN Expression_Constant COMMA IMPORTSTRING RPAREN */
3202 #line 496 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3203 {
3204 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3205 ASTExprConst* cond = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3206 ASTImportDecl* decl = new ASTImportDecl(str->getValue(), (*yylocp), true);
3207 (*yyvalp) = new ASTImportCondDecl(cond, decl, (*yylocp));
3208 delete str;}
3209 #line 3210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3210 break;
3211
3212 case 44: /* IncludePath: HASH INCLUDEPATH IMPORTSTRING */
3213 #line 505 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3214 {
3215 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3216 (*yyvalp) = new ASTIncludePath(str->getValue(), (*yylocp));
3217 delete str;}
3218 #line 3219 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3219 break;
3220
3221 case 45: /* Option: HASH OPTION IDENTIFIER Expression_Constant ENDLINE */
3222 #line 515 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3223 {
3224 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3225 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3226 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3227 delete name;}
3228 #line 3229 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3229 break;
3230
3231 case 46: /* Option: HASH OPTION IDENTIFIER Expression_Constant NEWLINE */
3232 #line 521 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3233 {
3234 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3235 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3236 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3237 delete name;}
3238 #line 3239 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3239 break;
3240
3241 case 47: /* Option: HASH OPTION IDENTIFIER INHERIT ENDLINE */
3242 #line 526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3243 {
3244 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3245 (*yyvalp) = new ASTSetOption(
3246 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3247 delete name;}
3248 #line 3249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3249 break;
3250
3251 case 48: /* Option: HASH OPTION IDENTIFIER INHERIT NEWLINE */
3252 #line 531 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3253 {
3254 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3255 (*yyvalp) = new ASTSetOption(
3256 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3257 delete name;}
3258 #line 3259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3259 break;
3260
3261 case 49: /* Option: HASH OPTION IDENTIFIER DEFAULT ENDLINE */
3262 #line 536 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3263 {
3264 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3265 (*yyvalp) = new ASTSetOption(
3266 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3267 delete name;}
3268 #line 3269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3269 break;
3270
3271 case 50: /* Option: HASH OPTION IDENTIFIER DEFAULT NEWLINE */
3272 #line 541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3273 {
3274 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3275 (*yyvalp) = new ASTSetOption(
3276 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3277 delete name;}
3278 #line 3279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3279 break;
3280
3281 case 51: /* Option: HASH OPTION DEFAULT Expression_Constant ENDLINE */
3282 #line 546 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3283 {
3284 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3285 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3286 #line 3287 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3287 break;
3288
3289 case 52: /* Option: HASH OPTION DEFAULT Expression_Constant NEWLINE */
3290 #line 549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3291 {
3292 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3293 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3294 #line 3295 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3295 break;
3296
3297 case 53: /* Option: HASH OPTION DEFAULT INHERIT ENDLINE */
3298 #line 552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3299 {
3300 (*yyvalp) = new ASTSetOption(
3301 "default", CompileOptionSetting::Inherit, (*yylocp));}
3302 #line 3303 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3303 break;
3304
3305 case 54: /* Option: HASH OPTION DEFAULT INHERIT NEWLINE */
3306 #line 555 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3307 {
3308 (*yyvalp) = new ASTSetOption(
3309 "default", CompileOptionSetting::Inherit, (*yylocp));}
3310 #line 3311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3311 break;
3312
3313 case 55: /* Option: HASH OPTION DEFAULT DEFAULT ENDLINE */
3314 #line 558 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3315 {
3316 (*yyvalp) = new ASTSetOption(
3317 "default", CompileOptionSetting::Default, (*yylocp));}
3318 #line 3319 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3319 break;
3320
3321 case 56: /* Option: HASH OPTION DEFAULT DEFAULT NEWLINE */
3322 #line 561 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3323 {
3324 (*yyvalp) = new ASTSetOption(
3325 "default", CompileOptionSetting::Default, (*yylocp));}
3326 #line 3327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3327 break;
3328
3329 case 57: /* Statement_Assert: CASSERT LPAREN Expression_Constant RPAREN */
3330 #line 570 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3331 {
3332 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, NULL, (*yylocp));
3333 }
3334 #line 3335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3335 break;
3336
3337 case 58: /* Statement_Assert: CASSERT LPAREN Expression_Constant COMMA QuotedString RPAREN */
3338 #line 573 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3339 {
3340 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));
3341 }
3342 #line 3343 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3343 break;
3344
3345 case 59: /* DataTypeDef: StandardDataTypedef */
3346 #line 581 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3347 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3348 #line 3349 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3349 break;
3350
3351 case 60: /* DataTypeDef: EnumDataTypedef */
3352 #line 582 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3353 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3354 #line 3355 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3355 break;
3356
3357 case 61: /* StandardDataTypedef: TYPEDEF DataType IDENTIFIER */
3358 #line 585 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3359 {
3360 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3361 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3362 (*yyvalp) = new ASTDataTypeDef(type, name->getValue(), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yyloc));
3363 delete name;}
3364 #line 3365 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3365 break;
3366
3367 case 62: /* EnumDataTypedef: ENUM IDENTIFIER LBRACE Enum_Block RBRACE */
3368 #line 592 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3369 {
3370 ASTDataEnum* en = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3371 ASTString* identifier = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3372 (*yyvalp) = new ASTCustomDataTypeDef(NULL, identifier->getValue(), en, (*yylocp));
3373 delete identifier;}
3374 #line 3375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3375 break;
3376
3377 case 63: /* DataType: DataType EMPTYBRACKETS */
3378 #line 599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3379 {
3380 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3381 ++dtype->becomeArray;
3382 (*yyvalp) = dtype;
3383 }
3384 #line 3385 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3385 break;
3386
3387 case 64: /* DataType: DataType_Mods */
3388 #line 604 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3389 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3390 #line 3391 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3391 break;
3392
3393 case 65: /* DataType_Mods: ZCONST DataType_Base */
3394 #line 608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3395 {
3396 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3397 ++dtype->constant_; //Increment the number of `const` keywords. If >1, this will produce an error later.
3398 (*yyvalp) = dtype;
3399 }
3400 #line 3401 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3401 break;
3402
3403 case 66: /* DataType_Mods: DataType_Base */
3404 #line 613 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3405 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3406 #line 3407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3407 break;
3408
3409 case 67: /* DataType_Base: ZAUTO */
3410 #line 618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3411 {(*yyvalp) = new ASTDataType(DataType::ZAUTO, (*yylocp));}
3412 #line 3413 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3413 break;
3414
3415 case 68: /* DataType_Base: ZVOID */
3416 #line 619 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3417 {(*yyvalp) = new ASTDataType(DataType::ZVOID, (*yylocp));}
3418 #line 3419 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3419 break;
3420
3421 case 69: /* DataType_Base: UNTYPED */
3422 #line 620 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3423 {(*yyvalp) = new ASTDataType(DataType::UNTYPED, (*yylocp));}
3424 #line 3425 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3425 break;
3426
3427 case 70: /* DataType_Base: ZBOOL */
3428 #line 621 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3429 {(*yyvalp) = new ASTDataType(DataType::BOOL, (*yylocp));}
3430 #line 3431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3431 break;
3432
3433 case 71: /* DataType_Base: ZFLOAT */
3434 #line 622 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3435 {(*yyvalp) = new ASTDataType(DataType::FLOAT, (*yylocp));}
3436 #line 3437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3437 break;
3438
3439 case 72: /* DataType_Base: ZCHAR */
3440 #line 623 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3441 {(*yyvalp) = new ASTDataType(DataType::CHAR, (*yylocp));}
3442 #line 3443 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3443 break;
3444
3445 case 73: /* DataType_Base: ZLONG */
3446 #line 624 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3447 {(*yyvalp) = new ASTDataType(DataType::LONG, (*yylocp));}
3448 #line 3449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3449 break;
3450
3451 case 74: /* DataType_Base: ZRGB */
3452 #line 625 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3453 {(*yyvalp) = new ASTDataType(DataType::RGBDATA, (*yylocp));}
3454 #line 3455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3455 break;
3456
3457 case 75: /* DataType_Base: Identifier_List */
3458 #line 627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3459 {
3460 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3461 std::string comment = std::move(iden->doc_comment);
3462 ASTDataType* datatype = new ASTDataType(new DataTypeUnresolved(iden), (*yylocp));
3463 datatype->doc_comment = std::move(comment);
3464 (*yyvalp) = datatype;
3465 }
3466 #line 3467 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3467 break;
3468
3469 case 76: /* ScriptTypeDef: SCRIPT TYPEDEF Script_Type IDENTIFIER */
3470 #line 636 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3471 {
3472 ASTScriptType* oldType = static_cast<ASTScriptType*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval);
3473 ASTString* newName = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3474 (*yyvalp) = new ASTScriptTypeDef(oldType, newName->getValue(), (*yylocp));
3475 delete newName;}
3476 #line 3477 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3477 break;
3478
3479 case 77: /* Data: INTERNAL Data */
3480 #line 647 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3481 {
3482 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3483 if (list->internal)
3484 yyerrmsg("internal modifier used twice");
3485 list->internal = true;
3486 (*yyvalp) = list;}
3487 #line 3488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3488 break;
3489
3490 case 78: /* Data: DataType Data_List */
3491 #line 653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3492 {
3493 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3494 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3495 list->baseType = type;
3496 if (!type->doc_comment.empty())
3497 list->doc_comment = std::move(type->doc_comment);
3498 list->location = (*yylocp);
3499 (*yyvalp) = list;}
3500 #line 3501 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3501 break;
3502
3503 case 79: /* Data_List: Data_List COMMA Data_Element */
3504 #line 664 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3505 {
3506 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3507 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3508 list->addDeclaration(element);
3509 list->location = (*yylocp);
3510 (*yyvalp) = list;}
3511 #line 3512 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3512 break;
3513
3514 case 80: /* Data_List: Data_Element */
3515 #line 670 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3516 {
3517 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3518 ASTDataDeclList* list = new ASTDataDeclList((*yylocp));
3519 list->addDeclaration(element);
3520 if (!element->doc_comment.empty())
3521 list->doc_comment = std::move(element->doc_comment);
3522 (*yyvalp) = list;}
3523 #line 3524 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3524 break;
3525
3526 case 81: /* Data_Element: Data_Element_Array_List ASSIGN Expression */
3527 #line 680 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3528 {
3529 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3530 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3531 element->setInitializer(initializer);
3532 element->location = (*yylocp);
3533 (*yyvalp) = element;}
3534 #line 3535 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3535 break;
3536
3537 case 82: /* Data_Element: Data_Element_Array_List */
3538 #line 686 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3539 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3540 #line 3541 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3541 break;
3542
3543 case 83: /* Data_Element_Array_List: Data_Element_Array_List Data_Element_Array_Element */
3544 #line 690 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3545 {
3546 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3547 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3548 element->extraArrays.push_back(extraArray);
3549 element->location = (*yylocp);
3550 (*yyvalp) = element;}
3551 #line 3552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3552 break;
3553
3554 case 84: /* Data_Element_Array_List: Identifier */
3555 #line 696 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3556 {
3557 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3558 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3559 element->identifier = name;
3560 if (!ParserHelper::isValidIdentifier(name->getValue()))
3561 yyerrmsg("ERROR: invalid identifier",name->location.first_line,name->location.first_column,name->getValue().c_str());
3562 element->doc_comment = std::move(name->doc_comment);
3563 if (!first_identifier_for_line) first_identifier_for_line = element;
3564 (*yyvalp) = element;
3565 }
3566 #line 3567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3567 break;
3568
3569 case 85: /* Single_Data_req_assign: DataType Identifier ASSIGN Expression */
3570 #line 709 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3571 {
3572 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3573 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3574 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3575 element->identifier = name;
3576 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3577 element->setInitializer(initializer);
3578 element->baseType = type;
3579 element->location = (*yylocp);
3580 (*yyvalp) = element;}
3581 #line 3582 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3582 break;
3583
3584 case 86: /* Data_Element_Array_Element: LBRACKET Data_Element_Array_Element_Size_List RBRACKET */
3585 #line 722 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3586 {
3587 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3588 extraArray->location = (*yylocp);
3589 (*yyvalp) = extraArray;}
3590 #line 3591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3591 break;
3592
3593 case 87: /* Data_Element_Array_Element: EMPTYBRACKETS */
3594 #line 726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3595 {(*yyvalp) = new ASTDataDeclExtraArray((*yylocp));}
3596 #line 3597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3597 break;
3598
3599 case 88: /* Data_Element_Array_Element_Size_List: Data_Element_Array_Element_Size_List COMMA Expression_Constant */
3600 #line 730 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3601 {
3602 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3603 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3604 extraArray->dimensions.push_back(size);
3605 extraArray->location = (*yylocp);
3606 (*yyvalp) = extraArray;}
3607 #line 3608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3608 break;
3609
3610 case 89: /* Data_Element_Array_Element_Size_List: Expression_Constant */
3611 #line 736 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3612 {
3613 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3614 ASTDataDeclExtraArray* extraArray = new ASTDataDeclExtraArray((*yylocp));
3615 extraArray->dimensions.push_back(size);
3616 (*yyvalp) = extraArray;}
3617 #line 3618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3618 break;
3619
3620 case 90: /* Function: CONSTEXPR Function */
3621 #line 748 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3622 {
3623 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3624 if(func->getFlag(FUNCFLAG_CONSTEXPR))
3625 {
3626 func->setFlag(FUNCFLAG_INVALID);
3627 func->invalidMsg += " Duplicate `constexpr`.";
3628 }
3629 func->setFlag(FUNCFLAG_CONSTEXPR);
3630 (*yyvalp) = func;
3631 }
3632 #line 3633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3633 break;
3634
3635 case 91: /* Function: STATIC Function */
3636 #line 759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3637 {
3638 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3639 if(func->getFlag(FUNCFLAG_STATIC))
3640 {
3641 func->setFlag(FUNCFLAG_INVALID);
3642 func->invalidMsg += " Duplicate `static`.";
3643 }
3644 else if(func->getFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CONSTRUCTOR))
3645 {
3646 func->setFlag(FUNCFLAG_INVALID);
3647 func->invalidMsg += " Constructors and destructors cannot be static.";
3648 }
3649 else func->setFlag(FUNCFLAG_STATIC);
3650 (*yyvalp) = func;
3651 }
3652 #line 3653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3653 break;
3654
3655 case 92: /* Function: INLINE Function */
3656 #line 775 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3657 {
3658 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3659 if(func->getFlag(FUNCFLAG_INLINE))
3660 {
3661 func->setFlag(FUNCFLAG_INVALID);
3662 func->invalidMsg += " Duplicate `inline`.";
3663 }
3664 else func->setFlag(FUNCFLAG_INLINE);
3665 (*yyvalp) = func;
3666 }
3667 #line 3668 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3668 break;
3669
3670 case 93: /* Function: INTERNAL Function */
3671 #line 786 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3672 {
3673 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3674 if(func->getFlag(FUNCFLAG_INTERNAL))
3675 {
3676 func->setFlag(FUNCFLAG_INVALID);
3677 func->invalidMsg += " Duplicate `internal`.";
3678 }
3679 if(func->block)
3680 {
3681 func->setFlag(FUNCFLAG_INVALID);
3682 func->invalidMsg += " Internal function must not have a body.";
3683 }
3684 func->setFlag(FUNCFLAG_INTERNAL);
3685 func->prototype = false;
3686 (*yyvalp) = func;
3687 }
3688 #line 3689 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3689 break;
3690
3691 case 94: /* Function: DataType Function_Typeless */
3692 #line 802 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3693 {
3694 ASTDataType* returnType = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3695 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3696 if (!returnType->doc_comment.empty())
3697 func->doc_comment = std::move(returnType->doc_comment);
3698 func->returnType = returnType;
3699 (*yyvalp) = func;}
3700 #line 3701 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3701 break;
3702
3703 case 95: /* Function_Typeless: Function_Heading Statement_Block */
3704 #line 813 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3705 {
3706 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3707 func->block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3708 (*yyvalp) = func;}
3709 #line 3710 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3710 break;
3711
3712 case 96: /* Function_Typeless: Function_Heading SEMICOLON */
3713 #line 817 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3714 {
3715 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3716 func->prototype = true;
3717 func->defaultReturn = new ASTExprConst(new ASTExprCast(new ASTDataType(DataType::CUNTYPED, (*yylocp)), new ASTNumberLiteral(new ASTFloat(0, 0, (*yylocp)), (*yylocp)), (*yylocp)), (*yylocp));
3718 (*yyvalp) = func;}
3719 #line 3720 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3720 break;
3721
3722 case 97: /* Function_Typeless: Function_Heading COLON DEFAULT Expression_Constant SEMICOLON */
3723 #line 822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3724 {
3725 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3726 func->prototype = true;
3727 func->defaultReturn = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3728 (*yyvalp) = func;}
3729 #line 3730 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3730 break;
3731
3732 case 98: /* Function_Heading: Identifier_List LPAREN Function_Parameters_List RPAREN */
3733 #line 830 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3734 {
3735 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3736 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3737 func->identifier = iden;
3738 func->location = (*yylocp);
3739 func->doc_comment = std::move(iden->doc_comment);
3740 (*yyvalp) = func;}
3741 #line 3742 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3742 break;
3743
3744 case 99: /* Function_Heading: Identifier_List LT FunctionTemplateList GT LPAREN Function_Parameters_List RPAREN */
3745 #line 838 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3746 {
3747 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
3748 ASTStringList* template_list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3749 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3750 func->identifier = iden;
3751 func->templates.swap(template_list->strings);
3752 delete template_list;
3753 func->location = (*yylocp);
3754 func->doc_comment = std::move(iden->doc_comment);
3755 (*yyvalp) = func;}
3756 #line 3757 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3757 break;
3758
3759 case 100: /* FunctionTemplateList: Identifier */
3760 #line 851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3761 {
3762 ASTStringList* list = new ASTStringList((*yylocp));
3763 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3764 list->strings.push_back(templ);
3765 (*yyvalp) = list;}
3766 #line 3767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3767 break;
3768
3769 case 101: /* FunctionTemplateList: FunctionTemplateList COMMA Identifier */
3770 #line 856 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3771 {
3772 ASTStringList* list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3773 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3774 list->location = (*yylocp);
3775 list->strings.push_back(templ);
3776 (*yyvalp) = list;}
3777 #line 3778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3778 break;
3779
3780 case 102: /* Function_Parameters_List: Function_Parameters_Element COMMA Function_Parameters_List */
3781 #line 864 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3782 {
3783 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3784 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3785 push_front(func->parameters, param);
3786 func->location = (*yylocp);
3787 (*yyvalp) = func;}
3788 #line 3789 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3789 break;
3790
3791 case 103: /* Function_Parameters_List: Function_Parameters_Element */
3792 #line 870 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3793 {
3794 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3795 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3796 push_front(func->parameters, param);
3797 (*yyvalp) = func;}
3798 #line 3799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3799 break;
3800
3801 case 104: /* Function_Parameters_List: Function_OptParams_List */
3802 #line 875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3803 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3804 #line 3805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3805 break;
3806
3807 case 105: /* Function_Parameters_List: Function_VarArg_Element */
3808 #line 876 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3809 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3810 #line 3811 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3811 break;
3812
3813 case 106: /* Function_Parameters_List: %empty */
3814 #line 877 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3815 {(*yyvalp) = new ASTFuncDecl((*yylocp));}
3816 #line 3817 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3817 break;
3818
3819 case 107: /* Function_Parameters_Element: DataType Identifier */
3820 #line 881 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3821 {
3822 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3823 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3824 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3825 element->identifier = name;
3826 element->baseType = type;
3827 (*yyvalp) = element;}
3828 #line 3829 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3829 break;
3830
3831 case 108: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant COMMA Function_OptParams_List */
3832 #line 891 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3833 {
3834 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3835 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3836 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3837 push_front(func->parameters, param);
3838 push_front(func->optparams, cval);
3839 func->location = (*yylocp);
3840 (*yyvalp) = func;}
3841 #line 3842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3842 break;
3843
3844 case 109: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant */
3845 #line 899 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3846 {
3847 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3848 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3849 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3850 push_front(func->parameters, param);
3851 push_front(func->optparams, cval);
3852 (*yyvalp) = func;}
3853 #line 3854 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3854 break;
3855
3856 case 110: /* Function_VarArg_Element: RANGE Function_Parameters_Element */
3857 #line 909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3858 {
3859 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3860 push_front(func->parameters, (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3861 func->setFlag(FUNCFLAG_VARARGS);
3862 (*yyvalp) = func;}
3863 #line 3864 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3864 break;
3865
3866 case 111: /* Class_Ident: IDENTIFIER */
3867 #line 918 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3868 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3869 #line 3870 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3870 break;
3871
3872 case 112: /* Class: ZCLASS Class_Ident Class_Block */
3873 #line 921 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3874 {
3875 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3876 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3877 user_class->location = (*yylocp);
3878 user_class->identifier = name;
3879 user_class->doc_comment = std::move(name->doc_comment);
3880 if (!first_identifier_for_line) first_identifier_for_line = user_class;
3881 (*yyvalp) = user_class;}
3882 #line 3883 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3883 break;
3884
3885 case 113: /* Class_Block: LBRACE Class_Block_List RBRACE */
3886 #line 932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3887 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3888 #line 3889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3889 break;
3890
3891 case 114: /* Class_Block: LBRACE RBRACE */
3892 #line 933 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3893 {(*yyvalp) = new ASTClass((*yylocp));}
3894 #line 3895 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3895 break;
3896
3897 case 115: /* Class_Block_List: Class_Block_List Class_Block_Element */
3898 #line 937 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3899 {
3900 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3901 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3902 user_class->addDeclaration(*declaration);
3903 user_class->location = (*yylocp);
3904 (*yyvalp) = user_class;}
3905 #line 3906 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3906 break;
3907
3908 case 116: /* Class_Block_List: Class_Block_List Option */
3909 #line 943 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3910 {
3911 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3912 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3913 user_class->options.push_back(option);
3914 user_class->location = (*yylocp);
3915 (*yyvalp) = user_class;
3916 if (!user_class->variables.empty()
3917 || !user_class->functions.empty()
3918 || !user_class->types.empty()) {
3919 yywarn("WARNING: Options should come before everything else.");}}
3920 #line 3921 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3921 break;
3922
3923 case 117: /* Class_Block_List: Class_Block_List Class_Constructor */
3924 #line 953 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3925 {
3926 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3927 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3928 user_class->constructors.push_back(func);
3929 (*yyvalp) = user_class;}
3930 #line 3931 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3931 break;
3932
3933 case 118: /* Class_Block_List: Class_Block_List Class_Destructor */
3934 #line 958 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3935 {
3936 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3937 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3938 if(user_class->destructor)
3939 {
3940 auto const& loc = func->location;
3941 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3942 delete func;
3943 }
3944 else user_class->destructor = func;
3945 (*yyvalp) = user_class;}
3946 #line 3947 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3947 break;
3948
3949 case 119: /* Class_Block_List: Class_Block_Element */
3950 #line 969 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3951 {
3952 ASTClass* user_class = new ASTClass((*yylocp));
3953 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3954 user_class->addDeclaration(*declaration);
3955 (*yyvalp) = user_class;}
3956 #line 3957 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3957 break;
3958
3959 case 120: /* Class_Block_List: Option */
3960 #line 974 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3961 {
3962 ASTClass* user_class = new ASTClass((*yylocp));
3963 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3964 user_class->options.push_back(option);
3965 (*yyvalp) = user_class;}
3966 #line 3967 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3967 break;
3968
3969 case 121: /* Class_Block_List: Class_Constructor */
3970 #line 979 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3971 {
3972 ASTClass* user_class = new ASTClass((*yylocp));
3973 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3974 user_class->constructors.push_back(func);
3975 (*yyvalp) = user_class;}
3976 #line 3977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3977 break;
3978
3979 case 122: /* Class_Block_List: Class_Destructor */
3980 #line 984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3981 {
3982 ASTClass* user_class = new ASTClass((*yylocp));
3983 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3984 if(user_class->destructor)
3985 {
3986 auto const& loc = func->location;
3987 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3988 delete func;
3989 }
3990 else user_class->destructor = func;
3991 (*yyvalp) = user_class;}
3992 #line 3993 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3993 break;
3994
3995 case 123: /* Class_Constructor: INTERNAL Class_Constructor */
3996 #line 998 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3997 {
3998 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3999 if(func->getFlag(FUNCFLAG_INTERNAL))
4000 {
4001 func->setFlag(FUNCFLAG_INVALID);
4002 func->invalidMsg += " Duplicate `internal`.";
4003 }
4004 else func->setFlag(FUNCFLAG_INTERNAL);
4005 func->prototype = false;
4006 (*yyvalp) = func;}
4007 #line 4008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4008 break;
4009
4010 case 124: /* Class_Constructor: Function_Typeless */
4011 #line 1008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4012 {
4013 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4014 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4015 func->returnType = returnType;
4016 func->setFlag(FUNCFLAG_CONSTRUCTOR|FUNCFLAG_CLASSFUNC);
4017 if(func->getFlag(FUNCFLAG_STATIC))
4018 {
4019 func->setFlag(FUNCFLAG_INVALID);
4020 func->invalidMsg += " Constructors and destructors cannot be static.";
4021 }
4022 (*yyvalp) = func;}
4023 #line 4024 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4024 break;
4025
4026 case 125: /* Class_Destructor: BITNOT Function_Typeless */
4027 #line 1021 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4028 {
4029 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4030 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4031 func->returnType = returnType;
4032 func->setFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CLASSFUNC);
4033 if(func->getFlag(FUNCFLAG_STATIC))
4034 {
4035 func->setFlag(FUNCFLAG_INVALID);
4036 func->invalidMsg += " Constructors and destructors cannot be static.";
4037 }
4038 (*yyvalp) = func;}
4039 #line 4040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4040 break;
4041
4042 case 126: /* Class_Data: Data */
4043 #line 1035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4044 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4045 #line 4046 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4046 break;
4047
4048 case 127: /* Class_Block_Element: Class_Data SEMICOLON */
4049 #line 1039 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4050 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4051 #line 4052 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4052 break;
4053
4054 case 128: /* Class_Block_Element: Function */
4055 #line 1040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4056 {
4057 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4058 func->setFlag(FUNCFLAG_CLASSFUNC);
4059 (*yyvalp) = func;}
4060 #line 4061 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4061 break;
4062
4063 case 129: /* Class_Block_Element: DataTypeDef SEMICOLON */
4064 #line 1044 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4065 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4066 #line 4067 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4067 break;
4068
4069 case 130: /* Class_Block_Element: DataEnum SEMICOLON */
4070 #line 1045 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4071 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4072 #line 4073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4073 break;
4074
4075 case 131: /* Class_Block_Element: Using SEMICOLON */
4076 #line 1046 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4077 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4078 #line 4079 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4079 break;
4080
4081 case 132: /* Class_Block_Element: Statement_Assert SEMICOLON */
4082 #line 1047 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4083 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4084 #line 4085 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4085 break;
4086
4087 case 133: /* Class_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Class_Block_Element */
4088 #line 1048 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4089 {
4090 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4091 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4092 declaration->compileErrorCatches.push_back(errorId);
4093 (*yyvalp) = declaration;}
4094 #line 4095 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4095 break;
4096
4097 case 134: /* Annotated_Script: Annotation_List Script */
4098 #line 1059 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4099 {
4100 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4101 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4102 handle_annotations(list, [&](AnnotData& data)
4103 {
4104 auto& key = data.key;
4105 if(key == "Author")
4106 {
4107 if(annot_type_check(ANNTY_STR, data))
4108 {
4109 annot_trunc_str(data.unescaped_val, 255);
4110 script->metadata.author = data.unescaped_val;
4111 }
4112 return true;
4113 }
4114 else if(key == "InitScript")
4115 {
4116 if(annot_type_check(ANNTY_INT, data))
4117 script->init_weight = data.intval;
4118 return true;
4119 }
4120 else if((key.size() == 5 || key.size() == 6) && !key.compare(0,4,"Flag"))
4121 {
4122 byte c = key[4]-'0';
4123 if(key.size() == 6)
4124 c = (c*10)+key[5]-'0';
4125 if(c < 16)
4126 {
4127 if(annot_type_check(ANNTY_STR, data))
4128 {
4129 annot_trunc_str(data.unescaped_val, 255);
4130 script->metadata.usrflags[c] = data.unescaped_val;
4131 }
4132 return true;
4133 }
4134 }
4135 else if((key.size() == 9 || key.size() == 10) && !key.compare(0,8,"FlagHelp"))
4136 {
4137 byte c = key[8]-'0';
4138 if(key.size() == 10)
4139 c = (c*10)+key[9]-'0';
4140 if(c < 16)
4141 {
4142 if(annot_type_check(ANNTY_STR, data))
4143 {
4144 annot_trunc_str(data.val, 65535);
4145 script->metadata.usrflags_help[c] = data.val;
4146 }
4147 return true;
4148 }
4149 }
4150 else if(key.size() == 6 && !key.compare(0,5,"InitD"))
4151 {
4152 byte c = key[5]-'0';
4153 if(c < 8)
4154 {
4155 if(annot_type_check(ANNTY_STR, data))
4156 {
4157 annot_trunc_str(data.unescaped_val, 255);
4158 script->metadata.initd[c] = data.unescaped_val;
4159 }
4160 return true;
4161 }
4162 }
4163 else if(key.size() == 10)
4164 {
4165 byte c = key[9]-'0';
4166 if(!key.compare(0,9,"InitDType"))
4167 {
4168 if(c < 8)
4169 {
4170 if(annot_type_check(ANNTY_STR, data))
4171 {
4172 int8_t v = -1;
4173 upperstr(data.val);
4174 if(data.val.size() == 2 && data.val[0] == 'L')
4175 {
4176 switch(data.val[1])
4177 {
4178 case 'D': v = nswapLDEC; break;
4179 case 'H': v = nswapLHEX; break;
4180 }
4181 }
4182 else if(data.val.size() == 1)
4183 {
4184 switch(data.val[0])
4185 {
4186 case 'D': v = nswapDEC; break;
4187 case 'H': v = nswapHEX; break;
4188 case 'B': v = nswapBOOL; break;
4189 }
4190 }
4191 if(unsigned(v) < nswapMAX)
4192 script->metadata.initd_type[c] = v;
4193 else if(data.val == "-1")
4194 script->metadata.initd_type[c] = -1;
4195 else annot_errstr("ERROR: Bad Annotation Value: '@" + key + "' must be"
4196 " exactly 'D','H','LD','LH','B', or '-1' NOT '" + data.strval + "'.");
4197 }
4198 return true;
4199 }
4200 }
4201 else if(!key.compare(0,9,"InitDHelp"))
4202 {
4203 if(c < 8)
4204 {
4205 if(annot_type_check(ANNTY_STR, data))
4206 {
4207 annot_trunc_str(data.val, 65535);
4208 script->metadata.initd_help[c] = data.val;
4209 }
4210 return true;
4211 }
4212 }
4213 else if(!key.compare(0,9,"Attribute"))
4214 {
4215 if(c < 10)
4216 {
4217 if(annot_type_check(ANNTY_STR, data))
4218 {
4219 annot_trunc_str(data.unescaped_val, 255);
4220 script->metadata.attributes[c] = data.unescaped_val;
4221 }
4222 return true;
4223 }
4224 }
4225 else if(!key.compare(0,9,"Attribyte"))
4226 {
4227 if(c < 8)
4228 {
4229 if(annot_type_check(ANNTY_STR, data))
4230 {
4231 annot_trunc_str(data.unescaped_val, 255);
4232 script->metadata.attribytes[c] = data.unescaped_val;
4233 }
4234 return true;
4235 }
4236 }
4237 }
4238 else if(key.size() == 11 && !key.compare(0,10,"Attrishort"))
4239 {
4240 byte c = key[10]-'0';
4241 if(c < 8)
4242 {
4243 if(annot_type_check(ANNTY_STR, data))
4244 {
4245 annot_trunc_str(data.unescaped_val, 255);
4246 script->metadata.attrishorts[c] = data.unescaped_val;
4247 }
4248 return true;
4249 }
4250 }
4251 else if(key.size() == 14)
4252 {
4253 if(!key.compare(0,13,"AttributeHelp"))
4254 {
4255 byte c = key[13]-'0';
4256 if(c < 10)
4257 {
4258 if(annot_type_check(ANNTY_STR, data))
4259 {
4260 annot_trunc_str(data.val, 65535);
4261 script->metadata.attributes_help[c] = data.val;
4262 }
4263 return true;
4264 }
4265 }
4266 else if(!key.compare(0,13,"AttribyteHelp"))
4267 {
4268 byte c = key[13]-'0';
4269 if(c < 8)
4270 {
4271 if(annot_type_check(ANNTY_STR, data))
4272 {
4273 annot_trunc_str(data.val, 65535);
4274 script->metadata.attribytes_help[c] = data.val;
4275 }
4276 return true;
4277 }
4278 }
4279 }
4280 else if(key.size() == 15 && !key.compare(0,14,"AttrishortHelp"))
4281 {
4282 byte c = key[14]-'0';
4283 if(c < 8)
4284 {
4285 if(annot_type_check(ANNTY_STR, data))
4286 {
4287 annot_trunc_str(data.val, 65535);
4288 script->metadata.attrishorts_help[c] = data.val;
4289 }
4290 return true;
4291 }
4292 }
4293 return false;
4294 });
4295 (*yyvalp) = script;}
4296 #line 4297 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4297 break;
4298
4299 case 135: /* Script: Script_Type SCRIPT IDENTIFIER Script_Block */
4300 #line 1259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4301 {
4302 ASTScriptType* type = (ASTScriptType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4303 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4304 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4305 script->identifier = name;
4306 script->type = type;
4307 script->metadata.script_name = name->getValue();
4308 script->location = (*yylocp);
4309 (*yyvalp) = script;}
4310 #line 4311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4311 break;
4312
4313 case 136: /* Script_Type: IDENTIFIER */
4314 #line 1272 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4315 {
4316 ASTString* name = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4317 (*yyvalp) = new ASTScriptType(name->getValue(), (*yylocp));
4318 delete name;}
4319 #line 4320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4320 break;
4321
4322 case 137: /* Script_Block: LBRACE Script_Block_List RBRACE */
4323 #line 1279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4324 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4325 #line 4326 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4326 break;
4327
4328 case 138: /* Script_Block: LBRACE RBRACE */
4329 #line 1280 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4330 {(*yyvalp) = new ASTScript((*yylocp));}
4331 #line 4332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4332 break;
4333
4334 case 139: /* Script_Block_List: Script_Block_List Script_Block_Element */
4335 #line 1284 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4336 {
4337 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4338 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4339 script->addDeclaration(*declaration);
4340 script->location = (*yylocp);
4341 (*yyvalp) = script;}
4342 #line 4343 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4343 break;
4344
4345 case 140: /* Script_Block_List: Script_Block_List Option */
4346 #line 1290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4347 {
4348 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4349 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4350 script->options.push_back(option);
4351 script->location = (*yylocp);
4352 (*yyvalp) = script;
4353 if (!script->variables.empty()
4354 || !script->functions.empty()
4355 || !script->types.empty()) {
4356 yywarn("WARNING: Options should come before everything else.");}}
4357 #line 4358 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4358 break;
4359
4360 case 141: /* Script_Block_List: Script_Block_Element */
4361 #line 1300 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4362 {
4363 ASTScript* script = new ASTScript((*yylocp));
4364 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4365 script->addDeclaration(*declaration);
4366 (*yyvalp) = script;}
4367 #line 4368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4368 break;
4369
4370 case 142: /* Script_Block_List: Option */
4371 #line 1305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4372 {
4373 ASTScript* script = new ASTScript((*yylocp));
4374 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4375 script->options.push_back(option);
4376 (*yyvalp) = script;}
4377 #line 4378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4378 break;
4379
4380 case 143: /* Script_Block_Element: Data SEMICOLON */
4381 #line 1313 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4382 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4383 #line 4384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4384 break;
4385
4386 case 144: /* Script_Block_Element: Function */
4387 #line 1314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4388 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4389 #line 4390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4390 break;
4391
4392 case 145: /* Script_Block_Element: DataTypeDef SEMICOLON */
4393 #line 1315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4394 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4395 #line 4396 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4396 break;
4397
4398 case 146: /* Script_Block_Element: DataEnum SEMICOLON */
4399 #line 1316 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4400 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4401 #line 4402 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4402 break;
4403
4404 case 147: /* Script_Block_Element: Using SEMICOLON */
4405 #line 1317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4406 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4407 #line 4408 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4408 break;
4409
4410 case 148: /* Script_Block_Element: Statement_Assert SEMICOLON */
4411 #line 1318 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4412 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4413 #line 4414 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4414 break;
4415
4416 case 149: /* Script_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Script_Block_Element */
4417 #line 1319 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4418 {
4419 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4420 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4421 declaration->compileErrorCatches.push_back(errorId);
4422 (*yyvalp) = declaration;}
4423 #line 4424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4424 break;
4425
4426 case 150: /* Annotation_List: Annotation_List COMMA Annotation */
4427 #line 1327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4428 {
4429 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4430 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4431 (*yyvalp) = list;}
4432 #line 4433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4433 break;
4434
4435 case 151: /* Annotation_List: Annotation */
4436 #line 1331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4437 {
4438 ASTAnnotationList* list = new ASTAnnotationList((*yylocp));
4439 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4440 (*yyvalp) = list;}
4441 #line 4442 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4442 break;
4443
4444 case 152: /* Annotation: HANDLE IDENTIFIER LPAREN QuotedString RPAREN */
4445 #line 1338 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4446 {
4447 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4448 ASTString* val = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4449 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4450 (*yyvalp) = a;}
4451 #line 4452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4452 break;
4453
4454 case 153: /* Annotation: HANDLE IDENTIFIER LPAREN NUMBER RPAREN */
4455 #line 1343 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4456 {
4457 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4458 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4459 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4460 (*yyvalp) = a;}
4461 #line 4462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4462 break;
4463
4464 case 154: /* Annotation: HANDLE IDENTIFIER LPAREN LONGNUMBER RPAREN */
4465 #line 1348 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4466 {
4467 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4468 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4469 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4470 (*yyvalp) = a;}
4471 #line 4472 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4472 break;
4473
4474 case 155: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS NUMBER RPAREN */
4475 #line 1353 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4476 {
4477 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4478 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4479 val->negative = !val->negative;
4480 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4481 (*yyvalp) = a;}
4482 #line 4483 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4483 break;
4484
4485 case 156: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS LONGNUMBER RPAREN */
4486 #line 1359 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4487 {
4488 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4489 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4490 val->negative = !val->negative;
4491 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4492 (*yyvalp) = a;}
4493 #line 4494 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4494 break;
4495
4496 case 157: /* Annotation: HANDLE IDENTIFIER LPAREN RPAREN */
4497 #line 1365 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4498 {
4499 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4500 ASTAnnotation* a = new ASTAnnotation(key, (*yylocp));
4501 (*yyvalp) = a;}
4502 #line 4503 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4503 break;
4504
4505 case 158: /* Block_Statement: Statement */
4506 #line 1375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4507 {
4508 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4509 if(ASTBlock* existing_block = dynamic_cast<ASTBlock*>(stmt))
4510 {
4511 (*yyvalp) = existing_block;
4512 }
4513 else
4514 {
4515 ASTBlock* block = new ASTBlock((*yylocp));
4516 block->statements.push_back(stmt);
4517 (*yyvalp) = block;
4518 }
4519 }
4520 #line 4521 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4521 break;
4522
4523 case 159: /* Statement: Data SEMICOLON */
4524 #line 1392 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4525 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4526 #line 4527 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4527 break;
4528
4529 case 160: /* Statement: DataTypeDef SEMICOLON */
4530 #line 1393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4531 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4532 #line 4533 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4533 break;
4534
4535 case 161: /* Statement: DataEnum SEMICOLON */
4536 #line 1394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4537 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4538 #line 4539 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4539 break;
4540
4541 case 162: /* Statement: Using SEMICOLON */
4542 #line 1395 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4543 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4544 #line 4545 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4545 break;
4546
4547 case 163: /* Statement: Statement_Expression SEMICOLON */
4548 #line 1397 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4549 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4550 #line 4551 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4551 break;
4552
4553 case 164: /* Statement: Statement_Block */
4554 #line 1398 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4555 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4556 #line 4557 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4557 break;
4558
4559 case 165: /* Statement: Statement_If */
4560 #line 1399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4561 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4562 #line 4563 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4563 break;
4564
4565 case 166: /* Statement: Statement_Switch */
4566 #line 1400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4567 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4568 #line 4569 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4569 break;
4570
4571 case 167: /* Statement: Statement_For */
4572 #line 1401 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4573 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4574 #line 4575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4575 break;
4576
4577 case 168: /* Statement: Annotated_Loop */
4578 #line 1402 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4579 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4580 #line 4581 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4581 break;
4582
4583 case 169: /* Statement: Statement_While */
4584 #line 1403 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4585 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4586 #line 4587 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4587 break;
4588
4589 case 170: /* Statement: Statement_Do */
4590 #line 1404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4591 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4592 #line 4593 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4593 break;
4594
4595 case 171: /* Statement: Statement_Repeat */
4596 #line 1405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4597 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4598 #line 4599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4599 break;
4600
4601 case 172: /* Statement: Statement_Return SEMICOLON */
4602 #line 1406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4603 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4604 #line 4605 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4605 break;
4606
4607 case 173: /* Statement: BREAK SEMICOLON */
4608 #line 1407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4609 {(*yyvalp) = new ASTStmtBreak(NULL, (*yylocp));}
4610 #line 4611 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4611 break;
4612
4613 case 174: /* Statement: BREAK NUMBER SEMICOLON */
4614 #line 1408 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4615 {
4616 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4617 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4618 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4619 }
4620 #line 4621 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4621 break;
4622
4623 case 175: /* Statement: CONTINUE SEMICOLON */
4624 #line 1413 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4625 {(*yyvalp) = new ASTStmtContinue(NULL, (*yylocp));}
4626 #line 4627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4627 break;
4628
4629 case 176: /* Statement: CONTINUE NUMBER SEMICOLON */
4630 #line 1414 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4631 {
4632 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4633 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4634 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4635 }
4636 #line 4637 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4637 break;
4638
4639 case 177: /* Statement: SEMICOLON */
4640 #line 1419 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4641 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4642 #line 4643 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4643 break;
4644
4645 case 178: /* Statement: Statement_CompileError SEMICOLON */
4646 #line 1420 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4647 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4648 #line 4649 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4649 break;
4650
4651 case 179: /* Statement: Statement_Assert SEMICOLON */
4652 #line 1421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4653 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4654 #line 4655 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4655 break;
4656
4657 case 180: /* Statement_NoSemicolon: Data */
4658 #line 1426 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4659 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4660 #line 4661 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4661 break;
4662
4663 case 181: /* Statement_NoSemicolon: DataTypeDef */
4664 #line 1427 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4665 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4666 #line 4667 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4667 break;
4668
4669 case 182: /* Statement_NoSemicolon: DataEnum */
4670 #line 1428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4671 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4672 #line 4673 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4673 break;
4674
4675 case 183: /* Statement_NoSemicolon: Statement_Expression */
4676 #line 1430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4677 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4678 #line 4679 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4679 break;
4680
4681 case 184: /* Statement_NoSemicolon: Statement_Block */
4682 #line 1431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4683 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4684 #line 4685 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4685 break;
4686
4687 case 185: /* Statement_NoSemicolon: Statement_If */
4688 #line 1432 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4689 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4690 #line 4691 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4691 break;
4692
4693 case 186: /* Statement_NoSemicolon: Statement_Switch */
4694 #line 1433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4695 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4696 #line 4697 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4697 break;
4698
4699 case 187: /* Statement_NoSemicolon: Statement_For */
4700 #line 1434 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4701 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4702 #line 4703 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4703 break;
4704
4705 case 188: /* Statement_NoSemicolon: Annotated_Loop */
4706 #line 1435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4707 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4708 #line 4709 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4709 break;
4710
4711 case 189: /* Statement_NoSemicolon: Statement_While */
4712 #line 1436 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4713 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4714 #line 4715 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4715 break;
4716
4717 case 190: /* Statement_NoSemicolon: Statement_Do */
4718 #line 1437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4719 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4720 #line 4721 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4721 break;
4722
4723 case 191: /* Statement_NoSemicolon: Statement_Return */
4724 #line 1438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4725 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4726 #line 4727 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4727 break;
4728
4729 case 192: /* Statement_NoSemicolon: BREAK */
4730 #line 1439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4731 {(*yyvalp) = new ASTStmtBreak(NULL,(*yylocp));}
4732 #line 4733 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4733 break;
4734
4735 case 193: /* Statement_NoSemicolon: BREAK NUMBER */
4736 #line 1440 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4737 {
4738 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4739 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4740 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4741 }
4742 #line 4743 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4743 break;
4744
4745 case 194: /* Statement_NoSemicolon: CONTINUE */
4746 #line 1445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4747 {(*yyvalp) = new ASTStmtContinue(NULL,(*yylocp));}
4748 #line 4749 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4749 break;
4750
4751 case 195: /* Statement_NoSemicolon: CONTINUE NUMBER */
4752 #line 1446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4753 {
4754 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4755 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4756 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4757 }
4758 #line 4759 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4759 break;
4760
4761 case 196: /* Statement_NoSemicolon: %empty */
4762 #line 1451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4763 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4764 #line 4765 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4765 break;
4766
4767 case 197: /* Statement_NoSemicolon: Statement_CompileError */
4768 #line 1452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4769 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4770 #line 4771 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4771 break;
4772
4773 case 198: /* Statement_Block: LBRACE Statement_Block_List RBRACE */
4774 #line 1456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4775 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4776 #line 4777 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4777 break;
4778
4779 case 199: /* Statement_Block: LBRACE RBRACE */
4780 #line 1457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4781 {(*yyvalp) = new ASTBlock((*yylocp));}
4782 #line 4783 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4783 break;
4784
4785 case 200: /* Statement_Block_List: Statement_Block_List Statement */
4786 #line 1461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4787 {
4788 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4789 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4790 block->statements.push_back(stmt);
4791 (*yyvalp) = block;}
4792 #line 4793 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4793 break;
4794
4795 case 201: /* Statement_Block_List: Statement_Block_List Option */
4796 #line 1466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4797 {
4798 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4799 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4800 block->options.push_back(option);
4801 (*yyvalp) = block;
4802 if (!block->statements.empty()) {
4803 yywarn("WARNING: Options should come before everything else.");}}
4804 #line 4805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4805 break;
4806
4807 case 202: /* Statement_Block_List: Statement */
4808 #line 1473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4809 {
4810 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4811 ASTBlock* block = new ASTBlock((*yylocp));
4812 block->statements.push_back(stmt);
4813 (*yyvalp) = block;}
4814 #line 4815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4815 break;
4816
4817 case 203: /* Statement_Block_List: Option */
4818 #line 1478 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4819 {
4820 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4821 ASTBlock* block = new ASTBlock((*yylocp));
4822 block->options.push_back(option);
4823 (*yyvalp) = block;}
4824 #line 4825 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4825 break;
4826
4827 case 204: /* Statement_If: IF If_Body */
4828 #line 1486 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4829 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4830 #line 4831 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4831 break;
4832
4833 case 205: /* Statement_If: UNLESS If_Body */
4834 #line 1487 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4835 {
4836 ASTStmtIf* stmt = (ASTStmtIf*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4837 stmt->invert();
4838 (*yyvalp) = stmt;
4839 }
4840 #line 4841 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4841 break;
4842
4843 case 206: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement */
4844 #line 1495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4845 {
4846 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4847 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4848 (*yyvalp) = new ASTStmtIf(decl, stmt, (*yylocp));}
4849 #line 4850 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4850 break;
4851
4852 case 207: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement ELSE Block_Statement */
4853 #line 1499 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4854 {
4855 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4856 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4857 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4858 (*yyvalp) = new ASTStmtIfElse(decl, thenStatement, elseStatement, (*yylocp));}
4859 #line 4860 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4860 break;
4861
4862 case 208: /* If_Body: LPAREN Expression RPAREN Block_Statement */
4863 #line 1504 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4864 {
4865 ASTExpr* cond = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4866 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4867 (*yyvalp) = new ASTStmtIf(cond, stmt, (*yylocp));}
4868 #line 4869 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4869 break;
4870
4871 case 209: /* If_Body: LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
4872 #line 1508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4873 {
4874 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4875 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4876 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4877 (*yyvalp) = new ASTStmtIfElse(test, thenStatement, elseStatement, (*yylocp));}
4878 #line 4879 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4879 break;
4880
4881 case 210: /* Statement_Switch: SWITCH LPAREN Expression RPAREN LBRACE Statement_Switch_Body RBRACE */
4882 #line 1516 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4883 {
4884 ASTExpr* key = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4885 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4886 sw->key = key;
4887 (*yyvalp) = sw;}
4888 #line 4889 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4889 break;
4890
4891 case 211: /* Statement_Switch_Body: Statement_Switch_Body Statement_Switch_Cases Statement_Block_List */
4892 #line 1523 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4893 {
4894 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4895 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4896 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4897 cases->block = block;
4898 sw->cases.push_back(cases);
4899 (*yyvalp) = sw;}
4900 #line 4901 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4901 break;
4902
4903 case 212: /* Statement_Switch_Body: Statement_Switch_Cases Statement_Block_List */
4904 #line 1530 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4905 {
4906 ASTStmtSwitch* sw = new ASTStmtSwitch((*yylocp));
4907 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4908 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4909 cases->block = block;
4910 sw->cases.push_back(cases);
4911 (*yyvalp) = sw;}
4912 #line 4913 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4913 break;
4914
4915 case 213: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Constant COLON */
4916 #line 1540 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4917 {
4918 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4919 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4920 cases->cases.push_back(key);
4921 (*yyvalp) = cases;}
4922 #line 4923 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4923 break;
4924
4925 case 214: /* Statement_Switch_Cases: Statement_Switch_Cases DEFAULT COLON */
4926 #line 1545 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4927 {
4928 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4929 cases->isDefault = true;
4930 (*yyvalp) = cases;}
4931 #line 4932 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4932 break;
4933
4934 case 215: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Const_Range COLON */
4935 #line 1549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4936 {
4937 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4938 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4939 cases->ranges.push_back(range);
4940 (*yyvalp) = cases;}
4941 #line 4942 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4942 break;
4943
4944 case 216: /* Statement_Switch_Cases: Statement_Switch_Cases CASE CASESTRING COLON */
4945 #line 1554 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4946 {
4947 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4948 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4949 delete rawstring;
4950 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4951 cases->str_cases.push_back(key);
4952 (*yyvalp) = cases;}
4953 #line 4954 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4954 break;
4955
4956 case 217: /* Statement_Switch_Cases: CASE Expression_Constant COLON */
4957 #line 1561 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4958 {
4959 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4960 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4961 cases->cases.push_back(key);
4962 (*yyvalp) = cases;}
4963 #line 4964 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4964 break;
4965
4966 case 218: /* Statement_Switch_Cases: CASE Expression_Const_Range COLON */
4967 #line 1566 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4968 {
4969 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4970 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4971 cases->ranges.push_back(range);
4972 (*yyvalp) = cases;}
4973 #line 4974 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4974 break;
4975
4976 case 219: /* Statement_Switch_Cases: CASE CASESTRING COLON */
4977 #line 1571 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4978 {
4979 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4980 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4981 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4982 delete rawstring;
4983 cases->str_cases.push_back(key);
4984 (*yyvalp) = cases;}
4985 #line 4986 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4986 break;
4987
4988 case 220: /* Statement_Switch_Cases: DEFAULT COLON */
4989 #line 1578 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4990 {
4991 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4992 cases->isDefault = true;
4993 (*yyvalp) = cases;}
4994 #line 4995 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4995 break;
4996
4997 case 221: /* Statement_For: Statement_For_Standard */
4998 #line 1585 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4999 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5000 #line 5001 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5001 break;
5002
5003 case 222: /* Statement_For: Statement_For_Each */
5004 #line 1586 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5005 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5006 #line 5007 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5007 break;
5008
5009 case 223: /* Statement_CommaList: Statement_CommaList COMMA Statement_NoSemicolon */
5010 #line 1590 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5011 {
5012 ASTNodeList<ASTStmt>* list = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5013 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5014 (*yyvalp) = list;
5015 }
5016 #line 5017 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5017 break;
5018
5019 case 224: /* Statement_CommaList: Statement_NoSemicolon */
5020 #line 1595 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5021 {
5022 ASTNodeList<ASTStmt>* list = new ASTNodeList<ASTStmt>();
5023 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5024 (*yyvalp) = list;
5025 }
5026 #line 5027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5027 break;
5028
5029 case 225: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement */
5030 #line 1608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5031 {
5032 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5033 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5034 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5035 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5036 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, nullptr, (*yylocp));
5037 }
5038 #line 5039 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5039 break;
5040
5041 case 226: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement ELSE Block_Statement */
5042 #line 1620 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5043 {
5044 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-8)].yystate.yysemantics.yyval;
5045 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5046 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5047 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5048 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5049 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, elseStatement, (*yylocp));
5050 }
5051 #line 5052 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5052 break;
5053
5054 case 227: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement */
5055 #line 1633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5056 {
5057 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5058 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5059 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5060
5061 (*yyvalp) = new ASTStmtForEach(iden, expr, body, nullptr, (*yylocp));
5062 }
5063 #line 5064 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5064 break;
5065
5066 case 228: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement ELSE Block_Statement */
5067 #line 1642 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5068 {
5069 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5070 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5071 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5072 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5073
5074 (*yyvalp) = new ASTStmtForEach(iden, expr, body, elseblock, (*yylocp));
5075 }
5076 #line 5077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5077 break;
5078
5079 case 229: /* Annotated_Loop: Annotation_List Statement_Loop */
5080 #line 1653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5081 {
5082 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5083 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5084 handle_annotations(list, [&](AnnotData& data)
5085 {
5086 auto& key = data.key;
5087 if(key == "AlwaysRunEndpoint")
5088 {
5089 if(annot_type_check(ANNTY_STR, data))
5090 {
5091 if(data.strval == "off")
5092 loop->overflow = ASTStmtRangeLoop::OVERFLOW_ALLOW;
5093 else if(data.strval == "int")
5094 loop->overflow = ASTStmtRangeLoop::OVERFLOW_INT;
5095 else if(data.strval == "long" || data.strval == "float")
5096 loop->overflow = ASTStmtRangeLoop::OVERFLOW_LONG;
5097 else annot_errstr(annot_err_header+": '@"+key+"' must be"
5098 " exactly 'off','int','float', or 'long', NOT '" + data.strval + "'.");
5099 }
5100 return true;
5101 }
5102 return false;
5103 });
5104 (*yyvalp) = loop;}
5105 #line 5106 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5106 break;
5107
5108 case 230: /* Annotated_Loop: Statement_Loop */
5109 #line 1677 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5110 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5111 #line 5112 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5112 break;
5113
5114 case 231: /* Statement_Loop: Statement_Loop_Inf */
5115 #line 1681 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5116 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5117 #line 5118 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5118 break;
5119
5120 case 232: /* Statement_Loop: Statement_Loop_Range */
5121 #line 1682 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5122 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5123 #line 5124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5124 break;
5125
5126 case 233: /* Statement_Loop_Inf: LOOP LPAREN RPAREN Block_Statement */
5127 #line 1687 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5128 {
5129 ASTExpr* test = new ASTBoolLiteral(true, (*yylocp));
5130 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5131 (*yyvalp) = new ASTStmtWhile(test,body,nullptr,(*yylocp));
5132 }
5133 #line 5134 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5134 break;
5135
5136 case 234: /* Statement_Loop_Range: Statement_Loop_Range_Base ELSE Block_Statement */
5137 #line 1695 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5138 {
5139 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5140 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5141 loop->elseBlock = elseblock;
5142 (*yyvalp) = loop;
5143 }
5144 #line 5145 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5145 break;
5146
5147 case 235: /* Statement_Loop_Range: Statement_Loop_Range_Base */
5148 #line 1701 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5149 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5150 #line 5151 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5151 break;
5152
5153 case 236: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5154 #line 1706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5155 {
5156 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
5157 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5158 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5159 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5160 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5161 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5162 }
5163 #line 5164 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5164 break;
5165
5166 case 237: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5167 #line 1715 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5168 {
5169 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5170 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5171 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5172 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5173 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5174 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5175 }
5176 #line 5177 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5177 break;
5178
5179 case 238: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range COMMA Expression RPAREN Block_Statement */
5180 #line 1724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5181 {
5182 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5183 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5184 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5185 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5186 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5187 }
5188 #line 5189 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5189 break;
5190
5191 case 239: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5192 #line 1732 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5193 {
5194 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
5195 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5196 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5197 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5198 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5199 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5200 }
5201 #line 5202 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5202 break;
5203
5204 case 240: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5205 #line 1741 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5206 {
5207 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5208 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5209 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5210 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5211 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5212 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5213 }
5214 #line 5215 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5215 break;
5216
5217 case 241: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range RPAREN Block_Statement */
5218 #line 1750 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5219 {
5220 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5221 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5222 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5223 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5224 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5225 }
5226 #line 5227 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5227 break;
5228
5229 case 242: /* Token_In: COLON */
5230 #line 1760 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5231 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5232 #line 5233 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5233 break;
5234
5235 case 243: /* Token_In: IN */
5236 #line 1761 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5237 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5238 #line 5239 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5239 break;
5240
5241 case 244: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement */
5242 #line 1765 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5243 {
5244 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5245 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5246 (*yyvalp) = new ASTStmtWhile(test, body, nullptr, (*yylocp));}
5247 #line 5248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5248 break;
5249
5250 case 245: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5251 #line 1769 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5252 {
5253 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5254 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5255 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5256 (*yyvalp) = new ASTStmtWhile(test, body, elseblock, (*yylocp));}
5257 #line 5258 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5258 break;
5259
5260 case 246: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement */
5261 #line 1774 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5262 {
5263 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5264 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5265 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, nullptr, (*yylocp));
5266 stmt->invert();
5267 (*yyvalp) = stmt;}
5268 #line 5269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5269 break;
5270
5271 case 247: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5272 #line 1780 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5273 {
5274 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5275 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5276 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5277 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, elseblock, (*yylocp));
5278 stmt->invert();
5279 (*yyvalp) = stmt;}
5280 #line 5281 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5281 break;
5282
5283 case 248: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN */
5284 #line 1790 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5285 {
5286 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5287 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5288 (*yyvalp) = new ASTStmtDo(test, body, nullptr, (*yylocp));}
5289 #line 5290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5290 break;
5291
5292 case 249: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN ELSE Block_Statement */
5293 #line 1794 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5294 {
5295 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5296 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5297 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5298 (*yyvalp) = new ASTStmtDo(test, body, elseblock, (*yylocp));}
5299 #line 5300 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5300 break;
5301
5302 case 250: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN */
5303 #line 1799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5304 {
5305 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5306 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5307 ASTStmtDo* stmt = new ASTStmtDo(test, body, nullptr, (*yylocp));
5308 stmt->invert();
5309 (*yyvalp) = stmt;}
5310 #line 5311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5311 break;
5312
5313 case 251: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN ELSE Block_Statement */
5314 #line 1805 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5315 {
5316 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5317 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5318 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5319 ASTStmtDo* stmt = new ASTStmtDo(test, body, elseblock, (*yylocp));
5320 stmt->invert();
5321 (*yyvalp) = stmt;}
5322 #line 5323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5323 break;
5324
5325 case 252: /* Statement_Repeat: REPEAT LPAREN Expression_Constant RPAREN Statement */
5326 #line 1815 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5327 {
5328 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5329 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5330 (*yyvalp) = new ASTStmtRepeat(expr, body, (*yylocp));}
5331 #line 5332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5332 break;
5333
5334 case 253: /* Statement_Return: RETURN Expression */
5335 #line 1822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5336 {
5337 ASTExpr* value = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5338 (*yyvalp) = new ASTStmtReturnVal(value, (*yylocp));}
5339 #line 5340 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5340 break;
5341
5342 case 254: /* Statement_Return: RETURN */
5343 #line 1825 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5344 {(*yyvalp) = new ASTStmtReturn((*yylocp));}
5345 #line 5346 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5346 break;
5347
5348 case 255: /* Statement_CompileError: EXPECTERROR LPAREN Expression_Constant RPAREN Statement_NoSemicolon */
5349 #line 1829 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5350 {
5351 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5352 ASTStmt* statement = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5353 statement->compileErrorCatches.push_back(errorId);
5354 (*yyvalp) = statement;}
5355 #line 5356 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5356 break;
5357
5358 case 256: /* DataEnum: ENUM LBRACE Enum_Block RBRACE */
5359 #line 1837 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5360 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5361 #line 5362 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5362 break;
5363
5364 case 257: /* DataEnum: ENUM ASSIGN DataType LBRACE Enum_Block RBRACE */
5365 #line 1838 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5366 {
5367 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5368 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5369 type->constant_ = 1; //force to be constant, skip `const const` errors
5370 list->baseType = type;
5371 (*yyvalp) = list;}
5372 #line 5373 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5373 break;
5374
5375 case 258: /* Enum_Block: Enum_Block COMMA Data_Element */
5376 #line 1846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5377 {
5378 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5379 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5380 list->addDeclaration(element);
5381 list->location = (*yylocp);
5382 (*yyvalp) = list;}
5383 #line 5384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5384 break;
5385
5386 case 259: /* Enum_Block: Data_Element */
5387 #line 1852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5388 {
5389 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5390 ASTDataEnum* list = new ASTDataEnum((*yylocp));
5391 list->addDeclaration(element);
5392 (*yyvalp) = list;}
5393 #line 5394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5394 break;
5395
5396 case 260: /* ScopeRes: SCOPERES */
5397 #line 1904 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5398 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5399 #line 5400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5400 break;
5401
5402 case 261: /* Identifier_List: Mixed_Identifier_List */
5403 #line 1909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5404 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5405 #line 5406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5406 break;
5407
5408 case 262: /* Identifier_List: idlist_scopres */
5409 #line 1910 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5410 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5411 #line 5412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5412 break;
5413
5414 case 263: /* Identifier_List: idlist_dot */
5415 #line 1911 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5416 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5417 #line 5418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5418 break;
5419
5420 case 264: /* Identifier_List: Ambigious_Iden_List */
5421 #line 1912 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5422 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5423 #line 5424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5424 break;
5425
5426 case 265: /* Scoperes_Identifier_List: idlist_scopres */
5427 #line 1916 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5428 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5429 #line 5430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5430 break;
5431
5432 case 266: /* Scoperes_Identifier_List: Ambigious_Iden_List */
5433 #line 1917 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5434 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5435 #line 5436 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5436 break;
5437
5438 case 267: /* Mixed_Identifier_List: Mixed_Identifier_List DOT Identifier */
5439 #line 1926 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5440 {
5441 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5442 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5443 identifier->components.push_back(name->getValue());
5444 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5445 identifier->delimiters.push_back(".");
5446 identifier->location = (*yylocp);
5447 (*yyvalp) = identifier;}
5448 #line 5449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5449 break;
5450
5451 case 268: /* Mixed_Identifier_List: idlist_scopres DOT Identifier */
5452 #line 1934 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5453 {
5454 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5455 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5456 identifier->components.push_back(name->getValue());
5457 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5458 identifier->delimiters.push_back(".");
5459 identifier->location = (*yylocp);
5460 (*yyvalp) = identifier;}
5461 #line 5462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5462 break;
5463
5464 case 269: /* Mixed_Identifier_List: Mixed_Identifier_List ScopeRes Identifier */
5465 #line 1942 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5466 {
5467 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5468 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5469 identifier->components.push_back(name->getValue());
5470 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5471 identifier->delimiters.push_back("::");
5472 identifier->location = (*yylocp);
5473 (*yyvalp) = identifier;}
5474 #line 5475 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5475 break;
5476
5477 case 270: /* Mixed_Identifier_List: idlist_dot ScopeRes Identifier */
5478 #line 1950 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5479 {
5480 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5481 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5482 identifier->components.push_back(name->getValue());
5483 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5484 identifier->delimiters.push_back("::");
5485 identifier->location = (*yylocp);
5486 (*yyvalp) = identifier;}
5487 #line 5488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5488 break;
5489
5490 case 271: /* idlist_scopres: idlist_scopres ScopeRes Identifier */
5491 #line 1961 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5492 {
5493 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5494 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5495 identifier->components.push_back(name->getValue());
5496 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5497 identifier->delimiters.push_back("::");
5498 identifier->location = (*yylocp);
5499 (*yyvalp) = identifier;}
5500 #line 5501 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5501 break;
5502
5503 case 272: /* idlist_scopres: Ambigious_Iden_List ScopeRes Identifier */
5504 #line 1969 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5505 {
5506 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5507 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5508 identifier->components.push_back(name->getValue());
5509 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5510 identifier->delimiters.push_back("::");
5511 identifier->location = (*yylocp);
5512 (*yyvalp) = identifier;}
5513 #line 5514 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5514 break;
5515
5516 case 273: /* idlist_scopres: ScopeRes Ambigious_Iden_List */
5517 #line 1977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5518 {
5519 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5520 identifier->noUsing = true;
5521 (*yyvalp) = identifier;}
5522 #line 5523 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5523 break;
5524
5525 case 274: /* idlist_dot: idlist_dot DOT Identifier */
5526 #line 1984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5527 {
5528 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5529 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5530 identifier->components.push_back(name->getValue());
5531 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5532 identifier->delimiters.push_back(".");
5533 identifier->location = (*yylocp);
5534 (*yyvalp) = identifier;}
5535 #line 5536 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5536 break;
5537
5538 case 275: /* idlist_dot: Ambigious_Iden_List DOT Identifier */
5539 #line 1992 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5540 {
5541 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5542 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5543 identifier->components.push_back(name->getValue());
5544 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5545 identifier->delimiters.push_back(".");
5546 identifier->location = (*yylocp);
5547 (*yyvalp) = identifier;}
5548 #line 5549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5549 break;
5550
5551 case 276: /* Ambigious_Iden_List: Identifier */
5552 #line 2003 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5553 {
5554 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5555 ASTExprIdentifier* identifier = new ASTExprIdentifier(name->getValue(), (*yylocp));
5556 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5557 identifier->doc_comment = std::move(name->doc_comment);
5558 if (!first_identifier_for_line) first_identifier_for_line = identifier;
5559 (*yyvalp) = identifier;}
5560 #line 5561 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5561 break;
5562
5563 case 277: /* Identifier: IDENTIFIER */
5564 #line 2013 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5565 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5566 #line 5567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5567 break;
5568
5569 case 278: /* Func_Left: Expr_Arrow */
5570 #line 2017 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5571 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5572 #line 5573 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5573 break;
5574
5575 case 279: /* Func_Left: Identifier_List */
5576 #line 2018 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5577 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5578 #line 5579 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5579 break;
5580
5581 case 280: /* Function_Call: NEW Identifier_List LPAREN RPAREN */
5582 #line 2022 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5583 {
5584 ASTExprCall* call = new ASTExprCall((*yylocp));
5585 call->setConstructor(true);
5586 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5587 call->left = left;
5588 call->location = (*yylocp);
5589 (*yyvalp) = call;}
5590 #line 5591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5591 break;
5592
5593 case 281: /* Function_Call: NEW Identifier_List LPAREN Function_Call_Parameters RPAREN */
5594 #line 2029 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5595 {
5596 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5597 call->setConstructor(true);
5598 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5599 call->left = left;
5600 call->location = (*yylocp);
5601 (*yyvalp) = call;}
5602 #line 5603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5603 break;
5604
5605 case 282: /* Function_Call: Func_Left LPAREN RPAREN */
5606 #line 2036 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5607 {
5608 ASTExprCall* call = new ASTExprCall((*yylocp));
5609 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5610 call->left = left;
5611 call->location = (*yylocp);
5612 (*yyvalp) = call;}
5613 #line 5614 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5614 break;
5615
5616 case 283: /* Function_Call: Func_Left LPAREN Function_Call_Parameters RPAREN */
5617 #line 2042 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5618 {
5619 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5620 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5621 call->left = left;
5622 call->location = (*yylocp);
5623 (*yyvalp) = call;}
5624 #line 5625 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5625 break;
5626
5627 case 284: /* Function_Call_Parameters: Function_Call_Parameters COMMA Expression */
5628 #line 2051 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5629 {
5630 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5631 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5632 call->parameters.push_back(e);
5633 call->location = (*yylocp);
5634 (*yyvalp) = call;}
5635 #line 5636 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5636 break;
5637
5638 case 285: /* Function_Call_Parameters: Expression */
5639 #line 2057 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5640 {
5641 ASTExprCall* call = new ASTExprCall((*yylocp));
5642 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5643 call->parameters.push_back(e);
5644 (*yyvalp) = call;}
5645 #line 5646 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5646 break;
5647
5648 case 286: /* Expr_1: Identifier_List */
5649 #line 2069 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5650 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5651 #line 5652 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5652 break;
5653
5654 case 287: /* Expr_1: Literal */
5655 #line 2070 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5656 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5657 #line 5658 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5658 break;
5659
5660 case 288: /* Expr_1: LPAREN Expression RPAREN */
5661 #line 2071 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5662 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5663 #line 5664 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5664 break;
5665
5666 case 289: /* Expr_2: Expr_1 */
5667 #line 2073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5668 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5669 #line 5670 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5670 break;
5671
5672 case 290: /* Expr_2: LT DataType GT Expr_2 */
5673 #line 2083 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5674 {
5675 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5676 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5677 ASTExprCast* cast = new ASTExprCast(type, expr, (*yylocp));
5678 (*yyvalp) = cast;}
5679 #line 5680 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5680 break;
5681
5682 case 291: /* Expr_Arrow: Expr_3 ARROW IDENTIFIER */
5683 #line 2091 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5684 {
5685 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5686 ASTString* right = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5687 (*yyvalp) = new ASTExprArrow(left, right, (*yylocp));}
5688 #line 5689 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5689 break;
5690
5691 case 292: /* Expr_3: Expr_2 */
5692 #line 2097 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5693 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5694 #line 5695 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5695 break;
5696
5697 case 293: /* Expr_3: Expr_3 INCREMENT */
5698 #line 2099 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5699 {(*yyvalp) = new ASTExprIncrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5700 #line 5701 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5701 break;
5702
5703 case 294: /* Expr_3: Expr_3 DECREMENT */
5704 #line 2101 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5705 {(*yyvalp) = new ASTExprDecrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5706 #line 5707 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5707 break;
5708
5709 case 295: /* Expr_3: Function_Call */
5710 #line 2103 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5711 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5712 #line 5713 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5713 break;
5714
5715 case 296: /* Expr_3: Expr_3 LBRACKET Expression RBRACKET */
5716 #line 2105 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5717 {
5718 (*yyvalp) = new ASTExprIndex((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));;}
5719 #line 5720 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5720 break;
5721
5722 case 297: /* Expr_3: Expr_Arrow */
5723 #line 2108 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5724 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5725 #line 5726 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5726 break;
5727
5728 case 298: /* Expr_4: Expr_3 */
5729 #line 2111 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5730 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5731 #line 5732 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5732 break;
5733
5734 case 299: /* Expr_4: INCREMENT Expr_4 */
5735 #line 2113 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5736 {(*yyvalp) = new ASTExprIncrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5737 #line 5738 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5738 break;
5739
5740 case 300: /* Expr_4: DECREMENT Expr_4 */
5741 #line 2115 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5742 {(*yyvalp) = new ASTExprDecrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5743 #line 5744 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5744 break;
5745
5746 case 301: /* Expr_4: MINUS Expr_4 */
5747 #line 2117 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5748 {(*yyvalp) = new ASTExprNegate((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5749 #line 5750 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5750 break;
5751
5752 case 302: /* Expr_4: NOT Expr_4 */
5753 #line 2119 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5754 {(*yyvalp) = new ASTExprNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5755 #line 5756 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5756 break;
5757
5758 case 303: /* Expr_4: BITNOT Expr_4 */
5759 #line 2121 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5760 {(*yyvalp) = new ASTExprBitNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5761 #line 5762 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5762 break;
5763
5764 case 304: /* Expr_5: Expr_4 */
5765 #line 2124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5766 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5767 #line 5768 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5768 break;
5769
5770 case 305: /* Expr_5: Expr_5 EXPN Expr_4 */
5771 #line 2126 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5772 {(*yyvalp) = new ASTExprExpn((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5773 #line 5774 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5774 break;
5775
5776 case 306: /* Expr_6: Expr_5 */
5777 #line 2129 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5778 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5779 #line 5780 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5780 break;
5781
5782 case 307: /* Expr_6: Expr_6 TIMES Expr_5 */
5783 #line 2131 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5784 {(*yyvalp) = new ASTExprTimes((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5785 #line 5786 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5786 break;
5787
5788 case 308: /* Expr_6: Expr_6 DIVIDE Expr_5 */
5789 #line 2133 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5790 {(*yyvalp) = new ASTExprDivide((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5791 #line 5792 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5792 break;
5793
5794 case 309: /* Expr_6: Expr_6 MODULO Expr_5 */
5795 #line 2135 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5796 {(*yyvalp) = new ASTExprModulo((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5797 #line 5798 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5798 break;
5799
5800 case 310: /* Expr_7: Expr_6 */
5801 #line 2138 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5802 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5803 #line 5804 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5804 break;
5805
5806 case 311: /* Expr_7: Expr_7 PLUS Expr_6 */
5807 #line 2140 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5808 {(*yyvalp) = new ASTExprPlus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5809 #line 5810 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5810 break;
5811
5812 case 312: /* Expr_7: Expr_7 MINUS Expr_6 */
5813 #line 2142 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5814 {(*yyvalp) = new ASTExprMinus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5815 #line 5816 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5816 break;
5817
5818 case 313: /* Expr_8: Expr_7 */
5819 #line 2145 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5820 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5821 #line 5822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5822 break;
5823
5824 case 314: /* Expr_8: Expr_8 LSHIFT Expr_7 */
5825 #line 2147 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5826 {(*yyvalp) = new ASTExprLShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5827 #line 5828 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5828 break;
5829
5830 case 315: /* Expr_8: Expr_8 RSHIFT Expr_7 */
5831 #line 2149 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5832 {(*yyvalp) = new ASTExprRShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5833 #line 5834 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5834 break;
5835
5836 case 316: /* Expr_9: Expr_8 */
5837 #line 2152 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5838 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5839 #line 5840 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5840 break;
5841
5842 case 317: /* Expr_9: Expr_9 LT Expr_8 */
5843 #line 2154 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5844 {(*yyvalp) = new ASTExprLT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5845 #line 5846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5846 break;
5847
5848 case 318: /* Expr_9: Expr_9 LE Expr_8 */
5849 #line 2156 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5850 {(*yyvalp) = new ASTExprLE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5851 #line 5852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5852 break;
5853
5854 case 319: /* Expr_9: Expr_9 GT Expr_8 */
5855 #line 2158 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5856 {(*yyvalp) = new ASTExprGT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5857 #line 5858 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5858 break;
5859
5860 case 320: /* Expr_9: Expr_9 GE Expr_8 */
5861 #line 2160 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5862 {(*yyvalp) = new ASTExprGE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5863 #line 5864 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5864 break;
5865
5866 case 321: /* Expr_10: Expr_9 */
5867 #line 2163 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5868 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5869 #line 5870 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5870 break;
5871
5872 case 322: /* Expr_10: Expr_10 EQ Expr_9 */
5873 #line 2165 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5874 {(*yyvalp) = new ASTExprEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5875 #line 5876 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5876 break;
5877
5878 case 323: /* Expr_10: Expr_10 NE Expr_9 */
5879 #line 2167 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5880 {(*yyvalp) = new ASTExprNE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5881 #line 5882 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5882 break;
5883
5884 case 324: /* Expr_10: Expr_10 APPXEQUAL Expr_9 */
5885 #line 2169 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5886 {(*yyvalp) = new ASTExprAppxEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5887 #line 5888 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5888 break;
5889
5890 case 325: /* Expr_10: Expr_10 XOR Expr_9 */
5891 #line 2171 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5892 {(*yyvalp) = new ASTExprXOR((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5893 #line 5894 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5894 break;
5895
5896 case 326: /* Expr_11: Expr_10 */
5897 #line 2174 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5898 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5899 #line 5900 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5900 break;
5901
5902 case 327: /* Expr_11: Expr_11 BITAND Expr_10 */
5903 #line 2176 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5904 {(*yyvalp) = new ASTExprBitAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5905 #line 5906 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5906 break;
5907
5908 case 328: /* Expr_12: Expr_11 */
5909 #line 2179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5910 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5911 #line 5912 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5912 break;
5913
5914 case 329: /* Expr_12: Expr_12 BITXOR Expr_11 */
5915 #line 2181 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5916 {(*yyvalp) = new ASTExprBitXor((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5917 #line 5918 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5918 break;
5919
5920 case 330: /* Expr_13: Expr_12 */
5921 #line 2184 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5922 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5923 #line 5924 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5924 break;
5925
5926 case 331: /* Expr_13: Expr_13 BITOR Expr_12 */
5927 #line 2186 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5928 {(*yyvalp) = new ASTExprBitOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5929 #line 5930 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5930 break;
5931
5932 case 332: /* Expr_14: Expr_13 */
5933 #line 2189 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5934 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5935 #line 5936 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5936 break;
5937
5938 case 333: /* Expr_14: Expr_14 AND Expr_13 */
5939 #line 2191 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5940 {(*yyvalp) = new ASTExprAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5941 #line 5942 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5942 break;
5943
5944 case 334: /* Expr_15: Expr_14 */
5945 #line 2194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5946 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5947 #line 5948 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5948 break;
5949
5950 case 335: /* Expr_15: Expr_15 OR Expr_14 */
5951 #line 2196 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5952 {(*yyvalp) = new ASTExprOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5953 #line 5954 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5954 break;
5955
5956 case 336: /* Expr_16: Expr_15 */
5957 #line 2199 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5958 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5959 #line 5960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5960 break;
5961
5962 case 337: /* Expr_16: Expr_15 QMARK Expr_16 COLON Expr_16 */
5963 #line 2202 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5964 {
5965 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5966 ASTExpr* middle = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5967 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5968 (*yyvalp) = new ASTTernaryExpr(left, middle, right, (*yylocp));
5969 }
5970 #line 5971 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5971 break;
5972
5973 case 338: /* Expr_17: Expr_16 */
5974 #line 2210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5975 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5976 #line 5977 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5977 break;
5978
5979 case 339: /* Expr_17: DELETE Expr_17 */
5980 #line 2211 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5981 {
5982 ASTExprDelete* del = new ASTExprDelete((*yylocp));
5983 ASTExpr* operand = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5984 del->operand = operand;
5985 (*yyvalp) = del;}
5986 #line 5987 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5987 break;
5988
5989 case 340: /* Expr_18: Expr_17 */
5990 #line 2218 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5991 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5992 #line 5993 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5993 break;
5994
5995 case 341: /* Expr_18: Expr_17 ASSIGN Expr_18 */
5996 #line 2220 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5997 {(*yyvalp) = new ASTExprAssign((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5998 #line 5999 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5999 break;
6000
6001 case 342: /* Expr_18: Expr_17 PLUSASSIGN Expr_18 */
6002 #line 2222 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6003 {
6004 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6005 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6006 (*yyvalp) = new ASTExprAssign(left, new ASTExprPlus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6007 #line 6008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6008 break;
6009
6010 case 343: /* Expr_18: Expr_17 MINUSASSIGN Expr_18 */
6011 #line 2227 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6012 {
6013 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6014 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6015 (*yyvalp) = new ASTExprAssign(left, new ASTExprMinus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6016 #line 6017 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6017 break;
6018
6019 case 344: /* Expr_18: Expr_17 TIMESASSIGN Expr_18 */
6020 #line 2232 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6021 {
6022 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6023 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6024 (*yyvalp) = new ASTExprAssign(left, new ASTExprTimes(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6025 #line 6026 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6026 break;
6027
6028 case 345: /* Expr_18: Expr_17 DIVIDEASSIGN Expr_18 */
6029 #line 2237 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6030 {
6031 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6032 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6033 (*yyvalp) = new ASTExprAssign(left, new ASTExprDivide(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6034 #line 6035 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6035 break;
6036
6037 case 346: /* Expr_18: Expr_17 MODULOASSIGN Expr_18 */
6038 #line 2242 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6039 {
6040 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6041 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6042 (*yyvalp) = new ASTExprAssign(left, new ASTExprModulo(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6043 #line 6044 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6044 break;
6045
6046 case 347: /* Expr_18: Expr_17 LSHIFTASSIGN Expr_18 */
6047 #line 2247 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6048 {
6049 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6050 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6051 (*yyvalp) = new ASTExprAssign(left, new ASTExprLShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6052 #line 6053 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6053 break;
6054
6055 case 348: /* Expr_18: Expr_17 RSHIFTASSIGN Expr_18 */
6056 #line 2252 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6057 {
6058 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6059 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6060 (*yyvalp) = new ASTExprAssign(left, new ASTExprRShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6061 #line 6062 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6062 break;
6063
6064 case 349: /* Expr_18: Expr_17 BITANDASSIGN Expr_18 */
6065 #line 2257 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6066 {
6067 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6068 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6069 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6070 #line 6071 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6071 break;
6072
6073 case 350: /* Expr_18: Expr_17 BITNOTASSIGN Expr_18 */
6074 #line 2263 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6075 {
6076 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6077 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6078 ASTExprBitAnd* rval = new ASTExprBitAnd(left->clone(), new ASTExprBitNot(right, (*yylocp)), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc));
6079 (*yyvalp) = new ASTExprAssign(left, rval, (*yylocp));}
6080 #line 6081 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6081 break;
6082
6083 case 351: /* Expr_18: Expr_17 BITXORASSIGN Expr_18 */
6084 #line 2269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6085 {
6086 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6087 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6088 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitXor(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6089 #line 6090 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6090 break;
6091
6092 case 352: /* Expr_18: Expr_17 BITORASSIGN Expr_18 */
6093 #line 2274 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6094 {
6095 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6096 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6097 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6098 #line 6099 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6099 break;
6100
6101 case 353: /* Expr_18: Expr_17 ANDASSIGN Expr_18 */
6102 #line 2279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6103 {
6104 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6105 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6106 (*yyvalp) = new ASTExprAssign(left, new ASTExprAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6107 #line 6108 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6108 break;
6109
6110 case 354: /* Expr_18: Expr_17 ORASSIGN Expr_18 */
6111 #line 2284 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6112 {
6113 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6114 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6115 (*yyvalp) = new ASTExprAssign(left, new ASTExprOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6116 #line 6117 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6117 break;
6118
6119 case 355: /* Expression: Expr_18 */
6120 #line 2290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6121 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6122 #line 6123 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6123 break;
6124
6125 case 356: /* Statement_Expression: Expression */
6126 #line 2293 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6127 {
6128 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6129 expr = handle_statement_expr(expr);
6130 (*yyvalp) = expr;}
6131 #line 6132 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6132 break;
6133
6134 case 357: /* Expression_Constant: Expression */
6135 #line 2300 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6136 {
6137 ASTExpr* content = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6138 (*yyvalp) = new ASTExprConst(content, (*yylocp));}
6139 #line 6140 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6140 break;
6141
6142 case 358: /* Expression_Const_Range: Expression_Range */
6143 #line 2306 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6144 {
6145 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6146 ASTExpr* start = range->start.release();
6147 range->start = new ASTExprConst(start, start->location);
6148 ASTExpr* end = range->end.release();
6149 range->end = new ASTExprConst(end, end->location);
6150 (*yyvalp) = range;
6151 }
6152 #line 6153 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6153 break;
6154
6155 case 359: /* Expression_Range: Expression RANGE Expression */
6156 #line 2317 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6157 {
6158 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6159 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6160 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6161 #line 6162 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6162 break;
6163
6164 case 360: /* Expression_Range: Expression RANGE_LR Expression */
6165 #line 2322 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6166 {
6167 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6168 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6169 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6170 #line 6171 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6171 break;
6172
6173 case 361: /* Expression_Range: Expression RANGE_L Expression */
6174 #line 2327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6175 {
6176 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6177 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6178 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6179 #line 6180 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6180 break;
6181
6182 case 362: /* Expression_Range: Expression RANGE_R Expression */
6183 #line 2332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6184 {
6185 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6186 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6187 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6188 #line 6189 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6189 break;
6190
6191 case 363: /* Expression_Range: Expression RANGE_N Expression */
6192 #line 2337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6193 {
6194 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6195 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6196 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6197 #line 6198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6198 break;
6199
6200 case 364: /* Expression_Range: LBRACKET Expression COMMA Expression RBRACKET */
6201 #line 2342 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6202 {
6203 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6204 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6205 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6206 #line 6207 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6207 break;
6208
6209 case 365: /* Expression_Range: LBRACKET Expression COMMA Expression RPAREN */
6210 #line 2347 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6211 {
6212 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6213 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6214 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6215 #line 6216 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6216 break;
6217
6218 case 366: /* Expression_Range: LPAREN Expression COMMA Expression RBRACKET */
6219 #line 2352 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6220 {
6221 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6222 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6223 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6224 #line 6225 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6225 break;
6226
6227 case 367: /* Expression_Range: LPAREN Expression COMMA Expression RPAREN */
6228 #line 2357 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6229 {
6230 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6231 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6232 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6233 #line 6234 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6234 break;
6235
6236 case 368: /* Literal: NUMBER */
6237 #line 2367 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6238 {
6239 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6240 (*yyvalp) = new ASTNumberLiteral(val, (*yylocp));}
6241 #line 6242 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6242 break;
6243
6244 case 369: /* Literal: LONGNUMBER */
6245 #line 2370 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6246 {
6247 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6248 (*yyvalp) = new ASTLongNumberLiteral(val, (*yylocp));}
6249 #line 6250 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6250 break;
6251
6252 case 370: /* Literal: SINGLECHAR */
6253 #line 2373 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6254 {
6255 ASTString* as = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6256 ASTFloat* number = new ASTFloat(int(as->getValue().at(1)), 0, (*yylocp));
6257 (*yyvalp) = new ASTCharLiteral(number, (*yylocp));}
6258 #line 6259 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6259 break;
6260
6261 case 371: /* Literal: Literal_String */
6262 #line 2377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6263 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6264 #line 6265 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6265 break;
6266
6267 case 372: /* Literal: Literal_Bool */
6268 #line 2378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6269 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6270 #line 6271 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6271 break;
6272
6273 case 373: /* Literal: Literal_Array */
6274 #line 2379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6275 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6276 #line 6277 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6277 break;
6278
6279 case 374: /* Literal: OPTIONVALUE LPAREN IDENTIFIER RPAREN */
6280 #line 2380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6281 {
6282 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6283 (*yyvalp) = new ASTOptionValue(name->getValue(), (*yylocp));
6284 delete name;}
6285 #line 6286 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6286 break;
6287
6288 case 375: /* Literal: ISINCLUDED LPAREN IMPORTSTRING RPAREN */
6289 #line 2384 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6290 {
6291 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6292 (*yyvalp) = new ASTIsIncluded(name->getValue(), (*yylocp));
6293 delete name;}
6294 #line 6295 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6295 break;
6296
6297 case 376: /* QuotedString: QuotedString QUOTEDSTRING */
6298 #line 2391 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6299 {
6300 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6301 ASTString* rawstr = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6302 str->append(rawstr->getValue());
6303 delete rawstr;
6304 (*yyvalp) = str;}
6305 #line 6306 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6306 break;
6307
6308 case 377: /* QuotedString: QUOTEDSTRING */
6309 #line 2397 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6310 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6311 #line 6312 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6312 break;
6313
6314 case 378: /* Literal_String: QuotedString */
6315 #line 2401 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6316 {
6317 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6318 ASTStringLiteral* str = new ASTStringLiteral(*rawstring);
6319 delete rawstring;
6320 (*yyvalp) = str;}
6321 #line 6322 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6322 break;
6323
6324 case 379: /* Literal_Bool: ZTRUE */
6325 #line 2410 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6326 {(*yyvalp) = new ASTBoolLiteral(true, (*yylocp));}
6327 #line 6328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6328 break;
6329
6330 case 380: /* Literal_Bool: ZFALSE */
6331 #line 2411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6332 {(*yyvalp) = new ASTBoolLiteral(false, (*yylocp));}
6333 #line 6334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6334 break;
6335
6336 case 381: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE Literal_Array_Body RBRACE */
6337 #line 2418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6338 {
6339 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
6340 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
6341 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6342 al->type = type;
6343 al->size = size;
6344 al->location = (*yylocp);
6345 (*yyvalp) = al;
6346 }
6347 #line 6348 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6348 break;
6349
6350 case 382: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE RBRACE */
6351 #line 2430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6352 {
6353 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6354 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6355 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6356 al->type = type;
6357 al->size = size;
6358 (*yyvalp) = al;
6359 }
6360 #line 6361 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6361 break;
6362
6363 case 383: /* Literal_Array: LBRACE Literal_Array_Body RBRACE */
6364 #line 2439 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6365 {
6366 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6367 al->location = (*yylocp);
6368 (*yyvalp) = al;}
6369 #line 6370 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6370 break;
6371
6372 case 384: /* Literal_Array_Body: Literal_Array_Body COMMA Expression */
6373 #line 2446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6374 {
6375 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6376 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6377 al->elements.push_back(element);
6378 (*yyvalp) = al;}
6379 #line 6380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6380 break;
6381
6382 case 385: /* Literal_Array_Body: Expression */
6383 #line 2451 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6384 {
6385 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6386 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6387 al->elements.push_back(element);
6388 (*yyvalp) = al;}
6389 #line 6390 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6390 break;
6391
6392
6393 #line 6394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6394
6395 default: break;
6396 }
6397 YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), yyvalp, yylocp);
6398
6399 530189616 return yyok;
6400 # undef yyerrok
6401 # undef YYABORT
6402 # undef YYACCEPT
6403 # undef YYNOMEM
6404 # undef YYERROR
6405 # undef YYBACKUP
6406 # undef yyclearin
6407 # undef YYRECOVERING
6408 }
6409
6410
6411 static void
6412 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
6413 {
6414 YY_USE (yy0);
6415 YY_USE (yy1);
6416
6417 switch (yyn)
6418 {
6419
6420 default: break;
6421 }
6422 }
6423
6424 /* Bison grammar-table manipulation. */
6425
6426 /*-----------------------------------------------.
6427 | Release the memory associated to this symbol. |
6428 `-----------------------------------------------*/
6429
6430 static void
6431 111020 yydestruct (const char *yymsg,
6432 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
6433 {
6434 YY_USE (yyvaluep);
6435 YY_USE (yylocationp);
6436 111020 YY_USE (root);
6437
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 111020 times.
111020 if (!yymsg)
6438 yymsg = "Deleting";
6439 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6440
6441 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6442 YY_USE (yykind);
6443 YY_IGNORE_MAYBE_UNINITIALIZED_END
6444 111020 }
6445
6446 /** Number of symbols composing the right hand side of rule #RULE. */
6447 static inline int
6448 530212022 yyrhsLength (yyRuleNum yyrule)
6449 {
6450 530212022 return yyr2[yyrule];
6451 }
6452
6453 static void
6454 110964 yydestroyGLRState (char const *yymsg, yyGLRState *yys, std::unique_ptr<ZScript::ASTFile>& root)
6455 {
6456
1/2
✓ Branch 0 taken 110964 times.
✗ Branch 1 not taken.
110964 if (yys->yyresolved)
6457 221928 yydestruct (yymsg, yy_accessing_symbol (yys->yylrState),
6458 110964 &yys->yysemantics.yyval, &yys->yyloc, root);
6459 else
6460 {
6461 #if YYDEBUG
6462 if (yydebug)
6463 {
6464 if (yys->yysemantics.yyfirstVal)
6465 YY_FPRINTF ((stderr, "%s unresolved", yymsg));
6466 else
6467 YY_FPRINTF ((stderr, "%s incomplete", yymsg));
6468 YY_SYMBOL_PRINT ("", yy_accessing_symbol (yys->yylrState), YY_NULLPTR, &yys->yyloc);
6469 }
6470 #endif
6471
6472 if (yys->yysemantics.yyfirstVal)
6473 {
6474 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
6475 yyGLRState *yyrh;
6476 int yyn;
6477 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
6478 yyn > 0;
6479 yyrh = yyrh->yypred, yyn -= 1)
6480 yydestroyGLRState (yymsg, yyrh, root);
6481 }
6482 }
6483 110964 }
6484
6485 #define yypact_value_is_default(Yyn) \
6486 ((Yyn) == YYPACT_NINF)
6487
6488 /** True iff LR state YYSTATE has only a default reduction (regardless
6489 * of token). */
6490 static inline yybool
6491 1010200673 yyisDefaultedState (yy_state_t yystate)
6492 {
6493 1010200673 return yypact_value_is_default (yypact[yystate]);
6494 }
6495
6496 /** The default reduction for YYSTATE, assuming it has one. */
6497 static inline yyRuleNum
6498 244894074 yydefaultAction (yy_state_t yystate)
6499 {
6500 244894074 return yydefact[yystate];
6501 }
6502
6503 #define yytable_value_is_error(Yyn) \
6504 0
6505
6506 /** The action to take in YYSTATE on seeing YYTOKEN.
6507 * Result R means
6508 * R < 0: Reduce on rule -R.
6509 * R = 0: Error.
6510 * R > 0: Shift to state R.
6511 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
6512 * of conflicting reductions.
6513 */
6514 static inline int
6515 382655206 yygetLRActions (yy_state_t yystate, yysymbol_kind_t yytoken, const short** yyconflicts)
6516 {
6517 382655206 int yyindex = yypact[yystate] + yytoken;
6518
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 382655206 times.
382655206 if (yytoken == YYSYMBOL_YYerror)
6519 {
6520 // This is the error token.
6521 *yyconflicts = yyconfl;
6522 return 0;
6523 }
6524
2/2
✓ Branch 0 taken 281704461 times.
✓ Branch 1 taken 100950745 times.
765310412 else if (yyisDefaultedState (yystate)
6525
3/6
✓ Branch 0 taken 382655206 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 382655206 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 382655206 times.
✗ Branch 5 not taken.
382655206 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
6526 {
6527 281704461 *yyconflicts = yyconfl;
6528 281704461 return -yydefact[yystate];
6529 }
6530 else if (! yytable_value_is_error (yytable[yyindex]))
6531 {
6532 100950745 *yyconflicts = yyconfl + yyconflp[yyindex];
6533 100950745 return yytable[yyindex];
6534 }
6535 else
6536 {
6537 *yyconflicts = yyconfl + yyconflp[yyindex];
6538 return 0;
6539 }
6540 382655206 }
6541
6542 /** Compute post-reduction state.
6543 * \param yystate the current state
6544 * \param yysym the nonterminal to push on the stack
6545 */
6546 static inline yy_state_t
6547 530212022 yyLRgotoState (yy_state_t yystate, yysymbol_kind_t yysym)
6548 {
6549 530212022 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
6550
5/6
✓ Branch 0 taken 410209378 times.
✓ Branch 1 taken 120002644 times.
✓ Branch 2 taken 410209378 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 77528750 times.
✓ Branch 5 taken 332680628 times.
530212022 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
6551 77528750 return yytable[yyr];
6552 else
6553 452683272 return yydefgoto[yysym - YYNTOKENS];
6554 530212022 }
6555
6556 static inline yybool
6557 382647580 yyisShiftAction (int yyaction)
6558 {
6559 382647580 return 0 < yyaction;
6560 }
6561
6562 static inline yybool
6563 285318004 yyisErrorAction (int yyaction)
6564 {
6565 285318004 return yyaction == 0;
6566 }
6567
6568 /* GLRStates */
6569
6570 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
6571 * if YYISSTATE, and otherwise a semantic option. Callers should call
6572 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
6573 * headroom. */
6574
6575 static inline yyGLRStackItem*
6576 627619319 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
6577 {
6578 627619319 yyGLRStackItem* yynewItem = yystackp->yynextFree;
6579 627619319 yystackp->yyspaceLeft -= 1;
6580 627619319 yystackp->yynextFree += 1;
6581 627619319 yynewItem->yystate.yyisState = yyisState;
6582 627619319 return yynewItem;
6583 }
6584
6585 /** Add a new semantic action that will execute the action for rule
6586 * YYRULE on the semantic values in YYRHS to the list of
6587 * alternative actions for YYSTATE. Assumes that YYRHS comes from
6588 * stack #YYK of *YYSTACKP. */
6589 static void
6590 22406 yyaddDeferredAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyGLRState* yystate,
6591 yyGLRState* yyrhs, yyRuleNum yyrule)
6592 {
6593 22406 yySemanticOption* yynewOption =
6594 22406 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
6595 YY_ASSERT (!yynewOption->yyisState);
6596 22406 yynewOption->yystate = yyrhs;
6597 22406 yynewOption->yyrule = yyrule;
6598
1/2
✓ Branch 0 taken 22406 times.
✗ Branch 1 not taken.
22406 if (yystackp->yytops.yylookaheadNeeds[yyk])
6599 {
6600 22406 yynewOption->yyrawchar = yychar;
6601 22406 yynewOption->yyval = yylval;
6602 22406 yynewOption->yyloc = yylloc;
6603 22406 }
6604 else
6605 yynewOption->yyrawchar = TOK_YYEMPTY;
6606 22406 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
6607 22406 yystate->yysemantics.yyfirstVal = yynewOption;
6608
6609
1/2
✓ Branch 0 taken 22406 times.
✗ Branch 1 not taken.
22406 YY_RESERVE_GLRSTACK (yystackp);
6610 22406 }
6611
6612 /* GLRStacks */
6613
6614 /** Initialize YYSET to a singleton set containing an empty stack. */
6615 static yybool
6616 55315 yyinitStateSet (yyGLRStateSet* yyset)
6617 {
6618 55315 yyset->yysize = 1;
6619 55315 yyset->yycapacity = 16;
6620 55315 yyset->yystates
6621 110630 = YY_CAST (yyGLRState**,
6622 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6623 * sizeof yyset->yystates[0]));
6624
1/2
✓ Branch 0 taken 55315 times.
✗ Branch 1 not taken.
55315 if (! yyset->yystates)
6625 return yyfalse;
6626 55315 yyset->yystates[0] = YY_NULLPTR;
6627 55315 yyset->yylookaheadNeeds
6628 110630 = YY_CAST (yybool*,
6629 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6630 * sizeof yyset->yylookaheadNeeds[0]));
6631
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (! yyset->yylookaheadNeeds)
6632 {
6633 YYFREE (yyset->yystates);
6634 return yyfalse;
6635 }
6636 110630 memset (yyset->yylookaheadNeeds,
6637 0,
6638 55315 YY_CAST (YYSIZE_T, yyset->yycapacity) * sizeof yyset->yylookaheadNeeds[0]);
6639 55315 return yytrue;
6640 55315 }
6641
6642 55315 static void yyfreeStateSet (yyGLRStateSet* yyset)
6643 {
6644 55315 YYFREE (yyset->yystates);
6645 55315 YYFREE (yyset->yylookaheadNeeds);
6646 55315 }
6647
6648 /** Initialize *YYSTACKP to a single empty stack, with total maximum
6649 * capacity for all stacks of YYSIZE. */
6650 static yybool
6651 55315 yyinitGLRStack (yyGLRStack* yystackp, YYPTRDIFF_T yysize)
6652 {
6653 55315 yystackp->yyerrState = 0;
6654 55315 yynerrs = 0;
6655 55315 yystackp->yyspaceLeft = yysize;
6656 55315 yystackp->yyitems
6657 110630 = YY_CAST (yyGLRStackItem*,
6658 YYMALLOC (YY_CAST (YYSIZE_T, yysize)
6659 * sizeof yystackp->yynextFree[0]));
6660
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (!yystackp->yyitems)
6661 return yyfalse;
6662 55315 yystackp->yynextFree = yystackp->yyitems;
6663 55315 yystackp->yysplitPoint = YY_NULLPTR;
6664 55315 yystackp->yylastDeleted = YY_NULLPTR;
6665 55315 return yyinitStateSet (&yystackp->yytops);
6666 55315 }
6667
6668
6669 #if YYSTACKEXPANDABLE
6670 # define YYRELOC(YYFROMITEMS, YYTOITEMS, YYX, YYTYPE) \
6671 &((YYTOITEMS) \
6672 - ((YYFROMITEMS) - YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX))))->YYTYPE
6673
6674 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
6675 stack from outside should be considered invalid after this call.
6676 We always expand when there are 1 or fewer items left AFTER an
6677 allocation, so that we can avoid having external pointers exist
6678 across an allocation. */
6679 static void
6680 yyexpandGLRStack (yyGLRStack* yystackp)
6681 {
6682 yyGLRStackItem* yynewItems;
6683 yyGLRStackItem* yyp0, *yyp1;
6684 YYPTRDIFF_T yynewSize;
6685 YYPTRDIFF_T yyn;
6686 YYPTRDIFF_T yysize = yystackp->yynextFree - yystackp->yyitems;
6687 if (YYMAXDEPTH - YYHEADROOM < yysize)
6688 yyMemoryExhausted (yystackp);
6689 yynewSize = 2*yysize;
6690 if (YYMAXDEPTH < yynewSize)
6691 yynewSize = YYMAXDEPTH;
6692 yynewItems
6693 = YY_CAST (yyGLRStackItem*,
6694 YYMALLOC (YY_CAST (YYSIZE_T, yynewSize)
6695 * sizeof yynewItems[0]));
6696 if (! yynewItems)
6697 yyMemoryExhausted (yystackp);
6698 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
6699 0 < yyn;
6700 yyn -= 1, yyp0 += 1, yyp1 += 1)
6701 {
6702 *yyp1 = *yyp0;
6703 if (*YY_REINTERPRET_CAST (yybool *, yyp0))
6704 {
6705 yyGLRState* yys0 = &yyp0->yystate;
6706 yyGLRState* yys1 = &yyp1->yystate;
6707 if (yys0->yypred != YY_NULLPTR)
6708 yys1->yypred =
6709 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
6710 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
6711 yys1->yysemantics.yyfirstVal =
6712 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
6713 }
6714 else
6715 {
6716 yySemanticOption* yyv0 = &yyp0->yyoption;
6717 yySemanticOption* yyv1 = &yyp1->yyoption;
6718 if (yyv0->yystate != YY_NULLPTR)
6719 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
6720 if (yyv0->yynext != YY_NULLPTR)
6721 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
6722 }
6723 }
6724 if (yystackp->yysplitPoint != YY_NULLPTR)
6725 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
6726 yystackp->yysplitPoint, yystate);
6727
6728 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
6729 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
6730 yystackp->yytops.yystates[yyn] =
6731 YYRELOC (yystackp->yyitems, yynewItems,
6732 yystackp->yytops.yystates[yyn], yystate);
6733 YYFREE (yystackp->yyitems);
6734 yystackp->yyitems = yynewItems;
6735 yystackp->yynextFree = yynewItems + yysize;
6736 yystackp->yyspaceLeft = yynewSize - yysize;
6737 }
6738 #endif
6739
6740 static void
6741 55315 yyfreeGLRStack (yyGLRStack* yystackp)
6742 {
6743 55315 YYFREE (yystackp->yyitems);
6744 55315 yyfreeStateSet (&yystackp->yytops);
6745 55315 }
6746
6747 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
6748 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
6749 * YYS. */
6750 static inline void
6751 22406 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
6752 {
6753
3/4
✓ Branch 0 taken 22406 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18586 times.
✓ Branch 3 taken 3820 times.
22406 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
6754 3820 yystackp->yysplitPoint = yys;
6755 22406 }
6756
6757 /** Invalidate stack #YYK in *YYSTACKP. */
6758 static inline void
6759 3813 yymarkStackDeleted (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
6760 {
6761
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6762 3813 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
6763 3813 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
6764 3813 }
6765
6766 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
6767 only be done once after a deletion, and only when all other stacks have
6768 been deleted. */
6769 static void
6770 yyundeleteLastStack (yyGLRStack* yystackp)
6771 {
6772 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
6773 return;
6774 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
6775 yystackp->yytops.yysize = 1;
6776 YY_DPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
6777 yystackp->yylastDeleted = YY_NULLPTR;
6778 }
6779
6780 static inline void
6781 3869 yyremoveDeletes (yyGLRStack* yystackp)
6782 {
6783 YYPTRDIFF_T yyi, yyj;
6784 3869 yyi = yyj = 0;
6785
2/2
✓ Branch 0 taken 7682 times.
✓ Branch 1 taken 3869 times.
11551 while (yyj < yystackp->yytops.yysize)
6786 {
6787
2/2
✓ Branch 0 taken 3869 times.
✓ Branch 1 taken 3813 times.
7682 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
6788 {
6789
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yyi == yyj)
6790 3813 YY_DPRINTF ((stderr, "Removing dead stacks.\n"));
6791 3813 yystackp->yytops.yysize -= 1;
6792 3813 }
6793 else
6794 {
6795 3869 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
6796 /* In the current implementation, it's unnecessary to copy
6797 yystackp->yytops.yylookaheadNeeds[yyi] since, after
6798 yyremoveDeletes returns, the parser immediately either enters
6799 deterministic operation or shifts a token. However, it doesn't
6800 hurt, and the code might evolve to need it. */
6801 3869 yystackp->yytops.yylookaheadNeeds[yyj] =
6802 3869 yystackp->yytops.yylookaheadNeeds[yyi];
6803
1/2
✓ Branch 0 taken 3869 times.
✗ Branch 1 not taken.
3869 if (yyj != yyi)
6804 YY_DPRINTF ((stderr, "Rename stack %ld -> %ld.\n",
6805 YY_CAST (long, yyi), YY_CAST (long, yyj)));
6806 3869 yyj += 1;
6807 }
6808 7682 yyi += 1;
6809 }
6810 3869 }
6811
6812 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
6813 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
6814 * value *YYVALP and source location *YYLOCP. */
6815 static inline void
6816 627574507 yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6817 YYPTRDIFF_T yyposn,
6818 YYSTYPE* yyvalp, YYLTYPE* yylocp)
6819 {
6820 627574507 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6821
6822 627574507 yynewState->yylrState = yylrState;
6823 627574507 yynewState->yyposn = yyposn;
6824 627574507 yynewState->yyresolved = yytrue;
6825 627574507 yynewState->yypred = yystackp->yytops.yystates[yyk];
6826 627574507 yynewState->yysemantics.yyval = *yyvalp;
6827 627574507 yynewState->yyloc = *yylocp;
6828 627574507 yystackp->yytops.yystates[yyk] = yynewState;
6829
6830
1/2
✓ Branch 0 taken 627574507 times.
✗ Branch 1 not taken.
627574507 YY_RESERVE_GLRSTACK (yystackp);
6831 627574507 }
6832
6833 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
6834 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
6835 * semantic value of YYRHS under the action for YYRULE. */
6836 static inline void
6837 22406 yyglrShiftDefer (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6838 YYPTRDIFF_T yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
6839 {
6840 22406 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6841 YY_ASSERT (yynewState->yyisState);
6842
6843 22406 yynewState->yylrState = yylrState;
6844 22406 yynewState->yyposn = yyposn;
6845 22406 yynewState->yyresolved = yyfalse;
6846 22406 yynewState->yypred = yystackp->yytops.yystates[yyk];
6847 22406 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
6848 22406 yystackp->yytops.yystates[yyk] = yynewState;
6849
6850 /* Invokes YY_RESERVE_GLRSTACK. */
6851 22406 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
6852 22406 }
6853
6854 #if YYDEBUG
6855
6856 /*----------------------------------------------------------------------.
6857 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
6858 `----------------------------------------------------------------------*/
6859
6860 static inline void
6861 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
6862 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root)
6863 {
6864 int yynrhs = yyrhsLength (yyrule);
6865 int yylow = 1;
6866 int yyi;
6867 YY_FPRINTF ((stderr, "Reducing stack %ld by rule %d (line %d):\n",
6868 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6869 if (! yynormal)
6870 yyfillin (yyvsp, 1, -yynrhs);
6871 /* The symbols being reduced. */
6872 for (yyi = 0; yyi < yynrhs; yyi++)
6873 {
6874 YY_FPRINTF ((stderr, " $%d = ", yyi + 1));
6875 yy_symbol_print (stderr,
6876 yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState),
6877 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval,
6878 &(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , root);
6879 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
6880 YY_FPRINTF ((stderr, " (unresolved)"));
6881 YY_FPRINTF ((stderr, "\n"));
6882 }
6883 }
6884 #endif
6885
6886 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
6887 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
6888 * semantic values. Assumes that all ambiguities in semantic values
6889 * have been previously resolved. Set *YYVALP to the resulting value,
6890 * and *YYLOCP to the computed location (if any). Return value is as
6891 * for userAction. */
6892 static inline YYRESULTTAG
6893 530189616 yydoAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6894 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
6895 {
6896 530189616 int yynrhs = yyrhsLength (yyrule);
6897
6898
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 530189616 times.
530189616 if (yystackp->yysplitPoint == YY_NULLPTR)
6899 {
6900 /* Standard special case: single stack. */
6901 530189616 yyGLRStackItem* yyrhs
6902 530189616 = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yytops.yystates[yyk]);
6903 YY_ASSERT (yyk == 0);
6904 530189616 yystackp->yynextFree -= yynrhs;
6905 530189616 yystackp->yyspaceLeft += yynrhs;
6906 530189616 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
6907 1060379232 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp, yyk,
6908 530189616 yyvalp, yylocp, root);
6909 }
6910 else
6911 {
6912 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
6913 yyGLRState* yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
6914 = yystackp->yytops.yystates[yyk];
6915 int yyi;
6916 if (yynrhs == 0)
6917 /* Set default location. */
6918 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;
6919 for (yyi = 0; yyi < yynrhs; yyi += 1)
6920 {
6921 yys = yys->yypred;
6922 YY_ASSERT (yys);
6923 }
6924 yyupdateSplit (yystackp, yys);
6925 yystackp->yytops.yystates[yyk] = yys;
6926 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
6927 yystackp, yyk, yyvalp, yylocp, root);
6928 }
6929 530189616 }
6930
6931 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
6932 * and push back on the resulting nonterminal symbol. Perform the
6933 * semantic action associated with YYRULE and store its value with the
6934 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
6935 * unambiguous. Otherwise, store the deferred semantic action with
6936 * the new state. If the new state would have an identical input
6937 * position, LR state, and predecessor to an existing state on the stack,
6938 * it is identified with that existing state, eliminating stack #YYK from
6939 * *YYSTACKP. In this case, the semantic value is
6940 * added to the options for the existing state's semantic value.
6941 */
6942 static inline YYRESULTTAG
6943 530212022 yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6944 yybool yyforceEval, std::unique_ptr<ZScript::ASTFile>& root)
6945 {
6946 530212022 YYPTRDIFF_T yyposn = yystackp->yytops.yystates[yyk]->yyposn;
6947
6948
3/4
✓ Branch 0 taken 22406 times.
✓ Branch 1 taken 530189616 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 22406 times.
530212022 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
6949 {
6950 YYSTYPE yyval;
6951 YYLTYPE yyloc;
6952
6953 530189616 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval, &yyloc, root);
6954
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 530189616 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
530189616 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
6955 YY_DPRINTF ((stderr,
6956 "Parse on stack %ld rejected by rule %d (line %d).\n",
6957 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6958
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 530189616 times.
530189616 if (yyflag != yyok)
6959 return yyflag;
6960 1060379232 yyglrShift (yystackp, yyk,
6961 1060379232 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
6962 530189616 yylhsNonterm (yyrule)),
6963 530189616 yyposn, &yyval, &yyloc);
6964 530189616 }
6965 else
6966 {
6967 YYPTRDIFF_T yyi;
6968 int yyn;
6969 22406 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
6970 yy_state_t yynewLRState;
6971
6972
2/2
✓ Branch 0 taken 25257 times.
✓ Branch 1 taken 22406 times.
47663 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
6973 47663 0 < yyn; yyn -= 1)
6974 {
6975 25257 yys = yys->yypred;
6976 YY_ASSERT (yys);
6977 25257 }
6978 22406 yyupdateSplit (yystackp, yys);
6979 22406 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
6980 22406 YY_DPRINTF ((stderr,
6981 "Reduced stack %ld by rule %d (line %d); action deferred. "
6982 "Now in state %d.\n",
6983 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule],
6984 yynewLRState));
6985
2/2
✓ Branch 0 taken 22406 times.
✓ Branch 1 taken 44812 times.
67218 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
6986
3/4
✓ Branch 0 taken 22406 times.
✓ Branch 1 taken 22406 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 22406 times.
67218 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
6987 {
6988 22406 yyGLRState *yysplit = yystackp->yysplitPoint;
6989 22406 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
6990
5/6
✓ Branch 0 taken 25264 times.
✓ Branch 1 taken 19548 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 25264 times.
✓ Branch 4 taken 22406 times.
✓ Branch 5 taken 22406 times.
44812 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
6991 {
6992
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 22406 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
22406 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
6993 {
6994 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
6995 yymarkStackDeleted (yystackp, yyk);
6996 YY_DPRINTF ((stderr, "Merging stack %ld into stack %ld.\n",
6997 YY_CAST (long, yyk), YY_CAST (long, yyi)));
6998 return yyok;
6999 }
7000 22406 yyp = yyp->yypred;
7001 }
7002 22406 }
7003 22406 yystackp->yytops.yystates[yyk] = yys;
7004 22406 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
7005 }
7006 530212022 return yyok;
7007 530212022 }
7008
7009 static YYPTRDIFF_T
7010 3813 yysplitStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
7011 {
7012
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yystackp->yysplitPoint == YY_NULLPTR)
7013 {
7014 YY_ASSERT (yyk == 0);
7015 3813 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
7016 3813 }
7017
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 if (yystackp->yytops.yycapacity <= yystackp->yytops.yysize)
7018 {
7019 YYPTRDIFF_T state_size = YYSIZEOF (yystackp->yytops.yystates[0]);
7020 YYPTRDIFF_T half_max_capacity = YYSIZE_MAXIMUM / 2 / state_size;
7021 if (half_max_capacity < yystackp->yytops.yycapacity)
7022 yyMemoryExhausted (yystackp);
7023 yystackp->yytops.yycapacity *= 2;
7024
7025 {
7026 yyGLRState** yynewStates
7027 = YY_CAST (yyGLRState**,
7028 YYREALLOC (yystackp->yytops.yystates,
7029 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7030 * sizeof yynewStates[0])));
7031 if (yynewStates == YY_NULLPTR)
7032 yyMemoryExhausted (yystackp);
7033 yystackp->yytops.yystates = yynewStates;
7034 }
7035
7036 {
7037 yybool* yynewLookaheadNeeds
7038 = YY_CAST (yybool*,
7039 YYREALLOC (yystackp->yytops.yylookaheadNeeds,
7040 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7041 * sizeof yynewLookaheadNeeds[0])));
7042 if (yynewLookaheadNeeds == YY_NULLPTR)
7043 yyMemoryExhausted (yystackp);
7044 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
7045 }
7046 }
7047 3813 yystackp->yytops.yystates[yystackp->yytops.yysize]
7048 7626 = yystackp->yytops.yystates[yyk];
7049 3813 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
7050 7626 = yystackp->yytops.yylookaheadNeeds[yyk];
7051 3813 yystackp->yytops.yysize += 1;
7052 3813 return yystackp->yytops.yysize - 1;
7053 }
7054
7055 /** True iff YYY0 and YYY1 represent identical options at the top level.
7056 * That is, they represent the same rule applied to RHS symbols
7057 * that produce the same terminal symbols. */
7058 static yybool
7059 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
7060 {
7061 if (yyy0->yyrule == yyy1->yyrule)
7062 {
7063 yyGLRState *yys0, *yys1;
7064 int yyn;
7065 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7066 yyn = yyrhsLength (yyy0->yyrule);
7067 yyn > 0;
7068 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7069 if (yys0->yyposn != yys1->yyposn)
7070 return yyfalse;
7071 return yytrue;
7072 }
7073 else
7074 return yyfalse;
7075 }
7076
7077 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
7078 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
7079 static void
7080 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
7081 {
7082 yyGLRState *yys0, *yys1;
7083 int yyn;
7084 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7085 yyn = yyrhsLength (yyy0->yyrule);
7086 0 < yyn;
7087 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7088 {
7089 if (yys0 == yys1)
7090 break;
7091 else if (yys0->yyresolved)
7092 {
7093 yys1->yyresolved = yytrue;
7094 yys1->yysemantics.yyval = yys0->yysemantics.yyval;
7095 }
7096 else if (yys1->yyresolved)
7097 {
7098 yys0->yyresolved = yytrue;
7099 yys0->yysemantics.yyval = yys1->yysemantics.yyval;
7100 }
7101 else
7102 {
7103 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
7104 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
7105 while (yytrue)
7106 {
7107 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
7108 break;
7109 else if (*yyz0p == YY_NULLPTR)
7110 {
7111 *yyz0p = yyz1;
7112 break;
7113 }
7114 else if (*yyz0p < yyz1)
7115 {
7116 yySemanticOption* yyz = *yyz0p;
7117 *yyz0p = yyz1;
7118 yyz1 = yyz1->yynext;
7119 (*yyz0p)->yynext = yyz;
7120 }
7121 yyz0p = &(*yyz0p)->yynext;
7122 }
7123 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
7124 }
7125 }
7126 }
7127
7128 /** Y0 and Y1 represent two possible actions to take in a given
7129 * parsing state; return 0 if no combination is possible,
7130 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
7131 static int
7132 yypreference (yySemanticOption* y0, yySemanticOption* y1)
7133 {
7134 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
7135 int p0 = yydprec[r0], p1 = yydprec[r1];
7136
7137 if (p0 == p1)
7138 {
7139 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
7140 return 0;
7141 else
7142 return 1;
7143 }
7144 if (p0 == 0 || p1 == 0)
7145 return 0;
7146 if (p0 < p1)
7147 return 3;
7148 if (p1 < p0)
7149 return 2;
7150 return 0;
7151 }
7152
7153 static YYRESULTTAG
7154 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root);
7155
7156
7157 /** Resolve the previous YYN states starting at and including state YYS
7158 * on *YYSTACKP. If result != yyok, some states may have been left
7159 * unresolved possibly with empty semantic option chains. Regardless
7160 * of whether result = yyok, each state has been left with consistent
7161 * data so that yydestroyGLRState can be invoked if necessary. */
7162 static YYRESULTTAG
7163 14290 yyresolveStates (yyGLRState* yys, int yyn,
7164 yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7165 {
7166
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 10477 times.
14290 if (0 < yyn)
7167 {
7168 YY_ASSERT (yys->yypred);
7169
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10477 times.
10477 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, root));
7170
1/2
✓ Branch 0 taken 10477 times.
✗ Branch 1 not taken.
10477 if (! yys->yyresolved)
7171 YYCHK (yyresolveValue (yys, yystackp, root));
7172 10477 }
7173 14290 return yyok;
7174 14290 }
7175
7176 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
7177 * user action, and return the semantic value and location in *YYVALP
7178 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
7179 * have been destroyed (assuming the user action destroys all RHS
7180 * semantic values if invoked). */
7181 static YYRESULTTAG
7182 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
7183 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
7184 {
7185 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7186 int yynrhs = yyrhsLength (yyopt->yyrule);
7187 YYRESULTTAG yyflag =
7188 yyresolveStates (yyopt->yystate, yynrhs, yystackp, root);
7189 if (yyflag != yyok)
7190 {
7191 yyGLRState *yys;
7192 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
7193 yydestroyGLRState ("Cleanup: popping", yys, root);
7194 return yyflag;
7195 }
7196
7197 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
7198 if (yynrhs == 0)
7199 /* Set default location. */
7200 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;
7201 {
7202 int yychar_current = yychar;
7203 YYSTYPE yylval_current = yylval;
7204 YYLTYPE yylloc_current = yylloc;
7205 yychar = yyopt->yyrawchar;
7206 yylval = yyopt->yyval;
7207 yylloc = yyopt->yyloc;
7208 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
7209 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7210 yystackp, -1, yyvalp, yylocp, root);
7211 yychar = yychar_current;
7212 yylval = yylval_current;
7213 yylloc = yylloc_current;
7214 }
7215 return yyflag;
7216 }
7217
7218 #if YYDEBUG
7219 static void
7220 yyreportTree (yySemanticOption* yyx, int yyindent)
7221 {
7222 int yynrhs = yyrhsLength (yyx->yyrule);
7223 int yyi;
7224 yyGLRState* yys;
7225 yyGLRState* yystates[1 + YYMAXRHS];
7226 yyGLRState yyleftmost_state;
7227
7228 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
7229 yystates[yyi] = yys;
7230 if (yys == YY_NULLPTR)
7231 {
7232 yyleftmost_state.yyposn = 0;
7233 yystates[0] = &yyleftmost_state;
7234 }
7235 else
7236 yystates[0] = yys;
7237
7238 if (yyx->yystate->yyposn < yys->yyposn + 1)
7239 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, empty>\n",
7240 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7241 yyx->yyrule - 1));
7242 else
7243 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, tokens %ld .. %ld>\n",
7244 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7245 yyx->yyrule - 1, YY_CAST (long, yys->yyposn + 1),
7246 YY_CAST (long, yyx->yystate->yyposn)));
7247 for (yyi = 1; yyi <= yynrhs; yyi += 1)
7248 {
7249 if (yystates[yyi]->yyresolved)
7250 {
7251 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
7252 YY_FPRINTF ((stderr, "%*s%s <empty>\n", yyindent+2, "",
7253 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState))));
7254 else
7255 YY_FPRINTF ((stderr, "%*s%s <tokens %ld .. %ld>\n", yyindent+2, "",
7256 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState)),
7257 YY_CAST (long, yystates[yyi-1]->yyposn + 1),
7258 YY_CAST (long, yystates[yyi]->yyposn)));
7259 }
7260 else
7261 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
7262 }
7263 }
7264 #endif
7265
7266 static YYRESULTTAG
7267 yyreportAmbiguity (yySemanticOption* yyx0,
7268 yySemanticOption* yyx1, std::unique_ptr<ZScript::ASTFile>& root)
7269 {
7270 YY_USE (yyx0);
7271 YY_USE (yyx1);
7272
7273 #if YYDEBUG
7274 YY_FPRINTF ((stderr, "Ambiguity detected.\n"));
7275 YY_FPRINTF ((stderr, "Option 1,\n"));
7276 yyreportTree (yyx0, 2);
7277 YY_FPRINTF ((stderr, "\nOption 2,\n"));
7278 yyreportTree (yyx1, 2);
7279 YY_FPRINTF ((stderr, "\n"));
7280 #endif
7281
7282 yyerror (root, YY_("syntax is ambiguous"));
7283 return yyabort;
7284 }
7285
7286 /** Resolve the locations for each of the YYN1 states in *YYSTACKP,
7287 * ending at YYS1. Has no effect on previously resolved states.
7288 * The first semantic option of a state is always chosen. */
7289 static void
7290 yyresolveLocations (yyGLRState *yys1, int yyn1,
7291 yyGLRStack *yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7292 {
7293 if (0 < yyn1)
7294 {
7295 yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, root);
7296 if (!yys1->yyresolved)
7297 {
7298 yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
7299 int yynrhs;
7300 yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
7301 YY_ASSERT (yyoption);
7302 yynrhs = yyrhsLength (yyoption->yyrule);
7303 if (0 < yynrhs)
7304 {
7305 yyGLRState *yys;
7306 int yyn;
7307 yyresolveLocations (yyoption->yystate, yynrhs,
7308 yystackp, root);
7309 for (yys = yyoption->yystate, yyn = yynrhs;
7310 yyn > 0;
7311 yys = yys->yypred, yyn -= 1)
7312 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
7313 }
7314 else
7315 {
7316 /* Both yyresolveAction and yyresolveLocations traverse the GSS
7317 in reverse rightmost order. It is only necessary to invoke
7318 yyresolveLocations on a subforest for which yyresolveAction
7319 would have been invoked next had an ambiguity not been
7320 detected. Thus the location of the previous state (but not
7321 necessarily the previous state itself) is guaranteed to be
7322 resolved already. */
7323 yyGLRState *yyprevious = yyoption->yystate;
7324 yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
7325 }
7326 YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
7327 }
7328 }
7329 }
7330
7331 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
7332 * perform the indicated actions, and set the semantic value of YYS.
7333 * If result != yyok, the chain of semantic options in YYS has been
7334 * cleared instead or it has been left unmodified except that
7335 * redundant options may have been removed. Regardless of whether
7336 * result = yyok, YYS has been left with consistent data so that
7337 * yydestroyGLRState can be invoked if necessary. */
7338 static YYRESULTTAG
7339 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7340 {
7341 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
7342 yySemanticOption* yybest = yyoptionList;
7343 yySemanticOption** yypp;
7344 yybool yymerge = yyfalse;
7345 YYSTYPE yyval;
7346 YYRESULTTAG yyflag;
7347 YYLTYPE *yylocp = &yys->yyloc;
7348
7349 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
7350 {
7351 yySemanticOption* yyp = *yypp;
7352
7353 if (yyidenticalOptions (yybest, yyp))
7354 {
7355 yymergeOptionSets (yybest, yyp);
7356 *yypp = yyp->yynext;
7357 }
7358 else
7359 {
7360 switch (yypreference (yybest, yyp))
7361 {
7362 case 0:
7363 yyresolveLocations (yys, 1, yystackp, root);
7364 return yyreportAmbiguity (yybest, yyp, root);
7365 break;
7366 case 1:
7367 yymerge = yytrue;
7368 break;
7369 case 2:
7370 break;
7371 case 3:
7372 yybest = yyp;
7373 yymerge = yyfalse;
7374 break;
7375 default:
7376 /* This cannot happen so it is not worth a YY_ASSERT (yyfalse),
7377 but some compilers complain if the default case is
7378 omitted. */
7379 break;
7380 }
7381 yypp = &yyp->yynext;
7382 }
7383 }
7384
7385 if (yymerge)
7386 {
7387 yySemanticOption* yyp;
7388 int yyprec = yydprec[yybest->yyrule];
7389 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7390 if (yyflag == yyok)
7391 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
7392 {
7393 if (yyprec == yydprec[yyp->yyrule])
7394 {
7395 YYSTYPE yyval_other;
7396 YYLTYPE yydummy;
7397 yyflag = yyresolveAction (yyp, yystackp, &yyval_other, &yydummy, root);
7398 if (yyflag != yyok)
7399 {
7400 yydestruct ("Cleanup: discarding incompletely merged value for",
7401 yy_accessing_symbol (yys->yylrState),
7402 &yyval, yylocp, root);
7403 break;
7404 }
7405 yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other);
7406 }
7407 }
7408 }
7409 else
7410 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7411
7412 if (yyflag == yyok)
7413 {
7414 yys->yyresolved = yytrue;
7415 yys->yysemantics.yyval = yyval;
7416 }
7417 else
7418 yys->yysemantics.yyfirstVal = YY_NULLPTR;
7419 return yyflag;
7420 }
7421
7422 static YYRESULTTAG
7423 3813 yyresolveStack (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7424 {
7425
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yystackp->yysplitPoint != YY_NULLPTR)
7426 {
7427 yyGLRState* yys;
7428 int yyn;
7429
7430
2/2
✓ Branch 0 taken 10477 times.
✓ Branch 1 taken 3813 times.
14290 for (yyn = 0, yys = yystackp->yytops.yystates[0];
7431 14290 yys != yystackp->yysplitPoint;
7432 10477 yys = yys->yypred, yyn += 1)
7433 10477 continue;
7434
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
7435 , root));
7436 3813 }
7437 3813 return yyok;
7438 3813 }
7439
7440 /** Called when returning to deterministic operation to clean up the extra
7441 * stacks. */
7442 static void
7443 3869 yycompressStack (yyGLRStack* yystackp)
7444 {
7445 /* yyr is the state after the split point. */
7446 yyGLRState *yyr;
7447
7448
3/4
✓ Branch 0 taken 3869 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3813 times.
✓ Branch 3 taken 56 times.
3869 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
7449 56 return;
7450
7451 {
7452 yyGLRState *yyp, *yyq;
7453
2/2
✓ Branch 0 taken 10477 times.
✓ Branch 1 taken 3813 times.
14290 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
7454 14290 yyp != yystackp->yysplitPoint;
7455 10477 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
7456 10477 yyp->yypred = yyr;
7457 }
7458
7459 3813 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
7460 3813 yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;
7461 3813 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
7462 3813 yystackp->yysplitPoint = YY_NULLPTR;
7463 3813 yystackp->yylastDeleted = YY_NULLPTR;
7464
7465
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 10477 times.
14290 while (yyr != YY_NULLPTR)
7466 {
7467 10477 yystackp->yynextFree->yystate = *yyr;
7468 10477 yyr = yyr->yypred;
7469 10477 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
7470 10477 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
7471 10477 yystackp->yynextFree += 1;
7472 10477 yystackp->yyspaceLeft -= 1;
7473 }
7474 3869 }
7475
7476 static YYRESULTTAG
7477 11439 yyprocessOneStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk,
7478 YYPTRDIFF_T yyposn, std::unique_ptr<ZScript::ASTFile>& root)
7479 {
7480
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 26219 times.
30032 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7481 {
7482 26219 yy_state_t yystate = yystackp->yytops.yystates[yyk]->yylrState;
7483 26219 YY_DPRINTF ((stderr, "Stack %ld Entering state %d\n",
7484 YY_CAST (long, yyk), yystate));
7485
7486 YY_ASSERT (yystate != YYFINAL);
7487
7488
2/2
✓ Branch 0 taken 4925 times.
✓ Branch 1 taken 21294 times.
26219 if (yyisDefaultedState (yystate))
7489 {
7490 YYRESULTTAG yyflag;
7491 4925 yyRuleNum yyrule = yydefaultAction (yystate);
7492
1/2
✓ Branch 0 taken 4925 times.
✗ Branch 1 not taken.
4925 if (yyrule == 0)
7493 {
7494 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7495 yymarkStackDeleted (yystackp, yyk);
7496 return yyok;
7497 }
7498 4925 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], root);
7499
1/2
✓ Branch 0 taken 4925 times.
✗ Branch 1 not taken.
4925 if (yyflag == yyerr)
7500 {
7501 YY_DPRINTF ((stderr,
7502 "Stack %ld dies "
7503 "(predicate failure or explicit user error).\n",
7504 YY_CAST (long, yyk)));
7505 yymarkStackDeleted (yystackp, yyk);
7506 return yyok;
7507 }
7508
1/2
✓ Branch 0 taken 4925 times.
✗ Branch 1 not taken.
4925 if (yyflag != yyok)
7509 return yyflag;
7510 4925 }
7511 else
7512 {
7513 21294 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7514 const short* yyconflicts;
7515 21294 const int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7516 21294 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
7517
7518
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 21294 times.
25107 for (/* nothing */; *yyconflicts; yyconflicts += 1)
7519 {
7520 YYRESULTTAG yyflag;
7521 3813 YYPTRDIFF_T yynewStack = yysplitStack (yystackp, yyk);
7522 3813 YY_DPRINTF ((stderr, "Splitting off stack %ld from %ld.\n",
7523 YY_CAST (long, yynewStack), YY_CAST (long, yyk)));
7524 7626 yyflag = yyglrReduce (yystackp, yynewStack,
7525 3813 *yyconflicts,
7526 3813 yyimmediate[*yyconflicts], root);
7527
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yyflag == yyok)
7528
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 YYCHK (yyprocessOneStack (yystackp, yynewStack,
7529 yyposn, root));
7530 else if (yyflag == yyerr)
7531 {
7532 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yynewStack)));
7533 yymarkStackDeleted (yystackp, yynewStack);
7534 }
7535 else
7536 return yyflag;
7537 3813 }
7538
7539
2/2
✓ Branch 0 taken 17481 times.
✓ Branch 1 taken 3813 times.
21294 if (yyisShiftAction (yyaction))
7540 3813 break;
7541
2/2
✓ Branch 0 taken 13668 times.
✓ Branch 1 taken 3813 times.
17481 else if (yyisErrorAction (yyaction))
7542 {
7543 3813 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7544 3813 yymarkStackDeleted (yystackp, yyk);
7545 3813 break;
7546 }
7547 else
7548 {
7549 27336 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
7550 13668 yyimmediate[-yyaction], root);
7551
1/2
✓ Branch 0 taken 13668 times.
✗ Branch 1 not taken.
13668 if (yyflag == yyerr)
7552 {
7553 YY_DPRINTF ((stderr,
7554 "Stack %ld dies "
7555 "(predicate failure or explicit user error).\n",
7556 YY_CAST (long, yyk)));
7557 yymarkStackDeleted (yystackp, yyk);
7558 break;
7559 }
7560
1/2
✓ Branch 0 taken 13668 times.
✗ Branch 1 not taken.
13668 else if (yyflag != yyok)
7561 return yyflag;
7562 }
7563 }
7564 }
7565 11439 return yyok;
7566 11439 }
7567
7568 /* Put in YYARG at most YYARGN of the expected tokens given the
7569 current YYSTACKP, and return the number of tokens stored in YYARG. If
7570 YYARG is null, return the number of expected tokens (guaranteed to
7571 be less than YYNTOKENS). */
7572 static int
7573 56 yypcontext_expected_tokens (const yyGLRStack* yystackp,
7574 yysymbol_kind_t yyarg[], int yyargn)
7575 {
7576 /* Actual size of YYARG. */
7577 56 int yycount = 0;
7578 56 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
7579
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (!yypact_value_is_default (yyn))
7580 {
7581 /* Start YYX at -YYN if negative to avoid negative indexes in
7582 YYCHECK. In other words, skip the first -YYN actions for
7583 this state because they are default actions. */
7584
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 int yyxbegin = yyn < 0 ? -yyn : 0;
7585 /* Stay within bounds of both yycheck and yytname. */
7586 56 int yychecklim = YYLAST - yyn + 1;
7587
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
7588 int yyx;
7589
2/2
✓ Branch 0 taken 7273 times.
✓ Branch 1 taken 55 times.
7328 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
7590
3/4
✓ Branch 0 taken 108 times.
✓ Branch 1 taken 7165 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 108 times.
7273 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
7591 7272 && !yytable_value_is_error (yytable[yyx + yyn]))
7592 {
7593
1/2
✓ Branch 0 taken 108 times.
✗ Branch 1 not taken.
108 if (!yyarg)
7594 ++yycount;
7595
2/2
✓ Branch 0 taken 107 times.
✓ Branch 1 taken 1 times.
108 else if (yycount == yyargn)
7596 1 return 0;
7597 else
7598 107 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
7599 107 }
7600 55 }
7601
2/6
✓ Branch 0 taken 55 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 55 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
55 if (yyarg && yycount == 0 && 0 < yyargn)
7602 yyarg[0] = YYSYMBOL_YYEMPTY;
7603 55 return yycount;
7604 56 }
7605
7606 static int
7607 56 yy_syntax_error_arguments (const yyGLRStack* yystackp,
7608 yysymbol_kind_t yyarg[], int yyargn)
7609 {
7610
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
✓ Branch 2 taken 56 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 56 times.
✗ Branch 5 not taken.
56 yysymbol_kind_t yytoken = yychar == TOK_YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7611 /* Actual size of YYARG. */
7612 56 int yycount = 0;
7613 /* There are many possibilities here to consider:
7614 - If this state is a consistent state with a default action, then
7615 the only way this function was invoked is if the default action
7616 is an error action. In that case, don't check for expected
7617 tokens because there are none.
7618 - The only way there can be no lookahead present (in yychar) is if
7619 this state is a consistent state with a default action. Thus,
7620 detecting the absence of a lookahead is sufficient to determine
7621 that there is no unexpected or expected token to report. In that
7622 case, just report a simple "syntax error".
7623 - Don't assume there isn't a lookahead just because this state is a
7624 consistent state with a default action. There might have been a
7625 previous inconsistent state, consistent state with a non-default
7626 action, or user semantic action that manipulated yychar.
7627 - Of course, the expected token list depends on states to have
7628 correct lookahead information, and it depends on the parser not
7629 to perform extra reductions after fetching a lookahead from the
7630 scanner and before detecting a syntax error. Thus, state merging
7631 (from LALR or IELR) and default reductions corrupt the expected
7632 token list. However, the list is correct for canonical LR with
7633 one exception: it will still contain any token that will not be
7634 accepted due to an error action in a later state.
7635 */
7636
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yytoken != YYSYMBOL_YYEMPTY)
7637 {
7638 int yyn;
7639
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yyarg)
7640 56 yyarg[yycount] = yytoken;
7641 56 ++yycount;
7642 112 yyn = yypcontext_expected_tokens (yystackp,
7643
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
7644
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yyn == YYENOMEM)
7645 return YYENOMEM;
7646 else
7647 56 yycount += yyn;
7648 56 }
7649 56 return yycount;
7650 56 }
7651
7652
7653
7654 static void
7655 56 yyreportSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7656 {
7657
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yyerrState != 0)
7658 return;
7659 {
7660 56 yybool yysize_overflow = yyfalse;
7661 56 char* yymsg = YY_NULLPTR;
7662 enum { YYARGS_MAX = 5 };
7663 /* Internationalized format string. */
7664 56 const char *yyformat = YY_NULLPTR;
7665 /* Arguments of yyformat: reported tokens (one for the "unexpected",
7666 one per "expected"). */
7667 yysymbol_kind_t yyarg[YYARGS_MAX];
7668 /* Cumulated lengths of YYARG. */
7669 56 YYPTRDIFF_T yysize = 0;
7670
7671 /* Actual size of YYARG. */
7672 56 int yycount
7673 56 = yy_syntax_error_arguments (yystackp, yyarg, YYARGS_MAX);
7674
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yycount == YYENOMEM)
7675 yyMemoryExhausted (yystackp);
7676
7677
3/7
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 48 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
56 switch (yycount)
7678 {
7679 #define YYCASE_(N, S) \
7680 case N: \
7681 yyformat = S; \
7682 break
7683 default: /* Avoid compiler warnings. */
7684 YYCASE_(0, YY_("syntax error"));
7685 1 YYCASE_(1, YY_("syntax error, unexpected %s"));
7686 7 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
7687 48 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
7688 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
7689 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
7690 #undef YYCASE_
7691 }
7692
7693 /* Compute error message size. Don't count the "%s"s, but reserve
7694 room for the terminator. */
7695 56 yysize = yystrlen (yyformat) - 2 * yycount + 1;
7696 {
7697 int yyi;
7698
2/2
✓ Branch 0 taken 159 times.
✓ Branch 1 taken 56 times.
215 for (yyi = 0; yyi < yycount; ++yyi)
7699 {
7700 159 YYPTRDIFF_T yysz
7701 159 = yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
7702
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 159 times.
159 if (YYSIZE_MAXIMUM - yysize < yysz)
7703 yysize_overflow = yytrue;
7704 else
7705 159 yysize += yysz;
7706 159 }
7707 }
7708
7709
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (!yysize_overflow)
7710 56 yymsg = YY_CAST (char *, YYMALLOC (YY_CAST (YYSIZE_T, yysize)));
7711
7712
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yymsg)
7713 {
7714 56 char *yyp = yymsg;
7715 56 int yyi = 0;
7716
2/2
✓ Branch 0 taken 2411 times.
✓ Branch 1 taken 56 times.
2467 while ((*yyp = *yyformat))
7717 {
7718
4/6
✓ Branch 0 taken 159 times.
✓ Branch 1 taken 2252 times.
✓ Branch 2 taken 159 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 159 times.
2411 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
7719 {
7720 159 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
7721 159 yyformat += 2;
7722 159 }
7723 else
7724 {
7725 2252 ++yyp;
7726 2252 ++yyformat;
7727 }
7728 }
7729 56 yyerror (root, yymsg);
7730 56 YYFREE (yymsg);
7731 56 }
7732 else
7733 {
7734 yyerror (root, YY_("syntax error"));
7735 yyMemoryExhausted (yystackp);
7736 }
7737 }
7738 56 yynerrs += 1;
7739 56 }
7740
7741 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
7742 yylval, and yylloc are the syntactic category, semantic value, and location
7743 of the lookahead. */
7744 static void
7745 56 yyrecoverSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7746 {
7747
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yyerrState == 3)
7748 /* We just shifted the error token and (perhaps) took some
7749 reductions. Skip tokens until we can proceed. */
7750 while (yytrue)
7751 {
7752 yysymbol_kind_t yytoken;
7753 int yyj;
7754 if (yychar == TOK_YYEOF)
7755 yyFail (yystackp, root, YY_NULLPTR);
7756 if (yychar != TOK_YYEMPTY)
7757 {
7758 /* We throw away the lookahead, but the error range
7759 of the shifted error token must take it into account. */
7760 yyGLRState *yys = yystackp->yytops.yystates[0];
7761 yyGLRStackItem yyerror_range[3];
7762 yyerror_range[1].yystate.yyloc = yys->yyloc;
7763 yyerror_range[2].yystate.yyloc = yylloc;
7764 YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
7765 yytoken = YYTRANSLATE (yychar);
7766 yydestruct ("Error: discarding",
7767 yytoken, &yylval, &yylloc, root);
7768 yychar = TOK_YYEMPTY;
7769 }
7770 yytoken = yygetToken (&yychar, root);
7771 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
7772 if (yypact_value_is_default (yyj))
7773 return;
7774 yyj += yytoken;
7775 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
7776 {
7777 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
7778 return;
7779 }
7780 else if (! yytable_value_is_error (yytable[yyj]))
7781 return;
7782 }
7783
7784 /* Reduce to one stack. */
7785 {
7786 YYPTRDIFF_T yyk;
7787
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
7788
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7789 56 break;
7790
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yyk >= yystackp->yytops.yysize)
7791 yyFail (yystackp, root, YY_NULLPTR);
7792
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
7793 yymarkStackDeleted (yystackp, yyk);
7794 56 yyremoveDeletes (yystackp);
7795 56 yycompressStack (yystackp);
7796 }
7797
7798 /* Pop stack until we find a state that shifts the error token. */
7799 56 yystackp->yyerrState = 3;
7800
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 502 times.
558 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
7801 {
7802 502 yyGLRState *yys = yystackp->yytops.yystates[0];
7803 502 int yyj = yypact[yys->yylrState];
7804
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 446 times.
502 if (! yypact_value_is_default (yyj))
7805 {
7806 446 yyj += YYSYMBOL_YYerror;
7807
3/6
✓ Branch 0 taken 444 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 444 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
446 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYSYMBOL_YYerror
7808
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 444 times.
444 && yyisShiftAction (yytable[yyj]))
7809 {
7810 /* Shift the error token. */
7811 int yyaction = yytable[yyj];
7812 /* First adjust its location.*/
7813 YYLTYPE yyerrloc;
7814 yystackp->yyerror_range[2].yystate.yyloc = yylloc;
7815 YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);
7816 YY_SYMBOL_PRINT ("Shifting", yy_accessing_symbol (yyaction),
7817 &yylval, &yyerrloc);
7818 yyglrShift (yystackp, 0, yyaction,
7819 yys->yyposn, &yylval, &yyerrloc);
7820 yys = yystackp->yytops.yystates[0];
7821 break;
7822 }
7823 446 }
7824 502 yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
7825
2/2
✓ Branch 0 taken 446 times.
✓ Branch 1 taken 56 times.
502 if (yys->yypred != YY_NULLPTR)
7826 446 yydestroyGLRState ("Error: popping", yys, root);
7827 502 yystackp->yytops.yystates[0] = yys->yypred;
7828 502 yystackp->yynextFree -= 1;
7829 502 yystackp->yyspaceLeft += 1;
7830 }
7831
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
7832 56 yyFail (yystackp, root, YY_NULLPTR);
7833 }
7834
7835 #define YYCHK1(YYE) \
7836 do { \
7837 switch (YYE) { \
7838 case yyok: break; \
7839 case yyabort: goto yyabortlab; \
7840 case yyaccept: goto yyacceptlab; \
7841 case yyerr: goto yyuser_error; \
7842 case yynomem: goto yyexhaustedlab; \
7843 default: goto yybuglab; \
7844 } \
7845 } while (0)
7846
7847 /*----------.
7848 | yyparse. |
7849 `----------*/
7850
7851 int
7852 55315 yyparse (std::unique_ptr<ZScript::ASTFile>& root)
7853 {
7854 int yyresult;
7855 yyGLRStack yystack;
7856 55315 yyGLRStack* const yystackp = &yystack;
7857 YYPTRDIFF_T yyposn;
7858
7859 55315 YY_DPRINTF ((stderr, "Starting parse\n"));
7860
7861 55315 yychar = TOK_YYEMPTY;
7862 55315 yylval = yyval_default;
7863 55315 yylloc = yyloc_default;
7864
7865
1/2
✓ Branch 0 taken 55315 times.
✗ Branch 1 not taken.
55315 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
7866 goto yyexhaustedlab;
7867
2/4
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 55259 times.
✗ Branch 3 not taken.
55315 switch (YYSETJMP (yystack.yyexception_buffer))
7868 {
7869 55259 case 0: break;
7870 56 case 1: goto yyabortlab;
7871 case 2: goto yyexhaustedlab;
7872 default: goto yybuglab;
7873 }
7874 55259 yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
7875 55259 yyposn = 0;
7876
7877 55315 while (yytrue)
7878 {
7879 /* For efficiency, we have two loops, the first of which is
7880 specialized to deterministic operation (single stack, no
7881 potential ambiguity). */
7882 /* Standard mode. */
7883 627574507 while (yytrue)
7884 {
7885 627574507 yy_state_t yystate = yystack.yytops.yystates[0]->yylrState;
7886 627574507 YY_DPRINTF ((stderr, "Entering state %d\n", yystate));
7887
2/2
✓ Branch 0 taken 627519248 times.
✓ Branch 1 taken 55259 times.
627574507 if (yystate == YYFINAL)
7888 55259 goto yyacceptlab;
7889
2/2
✓ Branch 0 taken 244889149 times.
✓ Branch 1 taken 382630099 times.
627519248 if (yyisDefaultedState (yystate))
7890 {
7891 244889149 yyRuleNum yyrule = yydefaultAction (yystate);
7892
1/2
✓ Branch 0 taken 244889149 times.
✗ Branch 1 not taken.
244889149 if (yyrule == 0)
7893 {
7894 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7895 yyreportSyntaxError (&yystack, root);
7896 goto yyuser_error;
7897 }
7898
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 244889149 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
244889149 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, root));
7899 244889149 }
7900 else
7901 {
7902 382630099 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7903 const short* yyconflicts;
7904 382630099 int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7905
2/2
✓ Branch 0 taken 382626286 times.
✓ Branch 1 taken 3813 times.
382630099 if (*yyconflicts)
7906 /* Enter nondeterministic mode. */
7907 3813 break;
7908
2/2
✓ Branch 0 taken 97325763 times.
✓ Branch 1 taken 285300523 times.
382626286 if (yyisShiftAction (yyaction))
7909 {
7910 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
7911 97325763 yychar = TOK_YYEMPTY;
7912 97325763 yyposn += 1;
7913 97325763 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
7914
1/2
✓ Branch 0 taken 97325763 times.
✗ Branch 1 not taken.
97325763 if (0 < yystack.yyerrState)
7915 yystack.yyerrState -= 1;
7916 97325763 }
7917
2/2
✓ Branch 0 taken 285300467 times.
✓ Branch 1 taken 56 times.
285300523 else if (yyisErrorAction (yyaction))
7918 {
7919 56 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7920 /* Issue an error message unless the scanner already
7921 did. */
7922
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yychar != TOK_YYerror)
7923 56 yyreportSyntaxError (&yystack, root);
7924 56 goto yyuser_error;
7925 }
7926 else
7927
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 285300467 times.
✗ Branch 5 not taken.
285300467 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, root));
7928 }
7929 }
7930
7931 /* Nondeterministic mode. */
7932 3813 while (yytrue)
7933 {
7934 yysymbol_kind_t yytoken_to_shift;
7935 YYPTRDIFF_T yys;
7936
7937
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 3813 times.
7626 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7938 3813 yystackp->yytops.yylookaheadNeeds[yys] = yychar != TOK_YYEMPTY;
7939
7940 /* yyprocessOneStack returns one of three things:
7941
7942 - An error flag. If the caller is yyprocessOneStack, it
7943 immediately returns as well. When the caller is finally
7944 yyparse, it jumps to an error label via YYCHK1.
7945
7946 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
7947 (&yystack, yys), which sets the top state of yys to NULL. Thus,
7948 yyparse's following invocation of yyremoveDeletes will remove
7949 the stack.
7950
7951 - yyok, when ready to shift a token.
7952
7953 Except in the first case, yyparse will invoke yyremoveDeletes and
7954 then shift the next token onto all remaining stacks. This
7955 synchronization of the shift (that is, after all preceding
7956 reductions on all stacks) helps prevent double destructor calls
7957 on yylval in the event of memory exhaustion. */
7958
7959
2/2
✓ Branch 0 taken 7626 times.
✓ Branch 1 taken 3813 times.
11439 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7960
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 7626 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7626 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, root));
7961 3813 yyremoveDeletes (&yystack);
7962
1/2
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
3813 if (yystack.yytops.yysize == 0)
7963 {
7964 yyundeleteLastStack (&yystack);
7965 if (yystack.yytops.yysize == 0)
7966 yyFail (&yystack, root, YY_("syntax error"));
7967 YYCHK1 (yyresolveStack (&yystack, root));
7968 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
7969 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7970 yyreportSyntaxError (&yystack, root);
7971 goto yyuser_error;
7972 }
7973
7974 /* If any yyglrShift call fails, it will fail after shifting. Thus,
7975 a copy of yylval will already be on stack 0 in the event of a
7976 failure in the following loop. Thus, yychar is set to TOK_YYEMPTY
7977 before the loop to make sure the user destructor for yylval isn't
7978 called twice. */
7979
2/4
✓ Branch 0 taken 3813 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3813 times.
3813 yytoken_to_shift = YYTRANSLATE (yychar);
7980 3813 yychar = TOK_YYEMPTY;
7981 3813 yyposn += 1;
7982
2/2
✓ Branch 0 taken 3813 times.
✓ Branch 1 taken 3813 times.
7626 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7983 {
7984 3813 yy_state_t yystate = yystack.yytops.yystates[yys]->yylrState;
7985 const short* yyconflicts;
7986 3813 int yyaction = yygetLRActions (yystate, yytoken_to_shift,
7987 &yyconflicts);
7988 /* Note that yyconflicts were handled by yyprocessOneStack. */
7989 3813 YY_DPRINTF ((stderr, "On stack %ld, ", YY_CAST (long, yys)));
7990 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
7991 3813 yyglrShift (&yystack, yys, yyaction, yyposn,
7992 &yylval, &yylloc);
7993 3813 YY_DPRINTF ((stderr, "Stack %ld now in state %d\n",
7994 YY_CAST (long, yys),
7995 yystack.yytops.yystates[yys]->yylrState));
7996 3813 }
7997
7998
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3813 times.
3813 if (yystack.yytops.yysize == 1)
7999 {
8000
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3813 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3813 YYCHK1 (yyresolveStack (&yystack, root));
8001 3813 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8002 3813 yycompressStack (&yystack);
8003 3813 break;
8004 }
8005 }
8006 3813 continue;
8007 yyuser_error:
8008 56 yyrecoverSyntaxError (&yystack, root);
8009 56 yyposn = yystack.yytops.yystates[0]->yyposn;
8010 }
8011
8012 yyacceptlab:
8013 55259 yyresult = 0;
8014 55259 goto yyreturnlab;
8015
8016 yybuglab:
8017 YY_ASSERT (yyfalse);
8018 goto yyabortlab;
8019
8020 yyabortlab:
8021 56 yyresult = 1;
8022 56 goto yyreturnlab;
8023
8024 yyexhaustedlab:
8025 yyerror (root, YY_("memory exhausted"));
8026 yyresult = 2;
8027 goto yyreturnlab;
8028
8029 yyreturnlab:
8030
2/2
✓ Branch 0 taken 55259 times.
✓ Branch 1 taken 56 times.
55315 if (yychar != TOK_YYEMPTY)
8031 56 yydestruct ("Cleanup: discarding lookahead",
8032
2/4
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 56 times.
56 YYTRANSLATE (yychar), &yylval, &yylloc, root);
8033
8034 /* If the stack is well-formed, pop the stack until it is empty,
8035 destroying its entries as we go. But free the stack regardless
8036 of whether it is well-formed. */
8037
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (yystack.yyitems)
8038 {
8039 55315 yyGLRState** yystates = yystack.yytops.yystates;
8040
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 55315 times.
55315 if (yystates)
8041 {
8042 55315 YYPTRDIFF_T yysize = yystack.yytops.yysize;
8043 YYPTRDIFF_T yyk;
8044
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 55315 times.
55371 for (yyk = 0; yyk < yysize; yyk += 1)
8045
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 55259 times.
55315 if (yystates[yyk])
8046 {
8047
2/2
✓ Branch 0 taken 165777 times.
✓ Branch 1 taken 55259 times.
221036 while (yystates[yyk])
8048 {
8049 165777 yyGLRState *yys = yystates[yyk];
8050 165777 yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
8051
2/2
✓ Branch 0 taken 110518 times.
✓ Branch 1 taken 55259 times.
165777 if (yys->yypred != YY_NULLPTR)
8052 110518 yydestroyGLRState ("Cleanup: popping", yys, root);
8053 165777 yystates[yyk] = yys->yypred;
8054 165777 yystack.yynextFree -= 1;
8055 165777 yystack.yyspaceLeft += 1;
8056 }
8057 55259 break;
8058 }
8059 55315 }
8060 55315 yyfreeGLRStack (&yystack);
8061 55315 }
8062
8063 55315 return yyresult;
8064 }
8065
8066 /* DEBUGGING ONLY */
8067 #if YYDEBUG
8068 /* Print *YYS and its predecessors. */
8069 static void
8070 yy_yypstack (yyGLRState* yys)
8071 {
8072 if (yys->yypred)
8073 {
8074 yy_yypstack (yys->yypred);
8075 YY_FPRINTF ((stderr, " -> "));
8076 }
8077 YY_FPRINTF ((stderr, "%d@%ld", yys->yylrState, YY_CAST (long, yys->yyposn)));
8078 }
8079
8080 /* Print YYS (possibly NULL) and its predecessors. */
8081 static void
8082 yypstates (yyGLRState* yys)
8083 {
8084 if (yys == YY_NULLPTR)
8085 YY_FPRINTF ((stderr, "<null>"));
8086 else
8087 yy_yypstack (yys);
8088 YY_FPRINTF ((stderr, "\n"));
8089 }
8090
8091 /* Print the stack #YYK. */
8092 static void
8093 yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
8094 {
8095 yypstates (yystackp->yytops.yystates[yyk]);
8096 }
8097
8098 /* Print all the stacks. */
8099 static void
8100 yypdumpstack (yyGLRStack* yystackp)
8101 {
8102 #define YYINDEX(YYX) \
8103 YY_CAST (long, \
8104 ((YYX) \
8105 ? YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX)) - yystackp->yyitems \
8106 : -1))
8107
8108 yyGLRStackItem* yyp;
8109 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
8110 {
8111 YY_FPRINTF ((stderr, "%3ld. ",
8112 YY_CAST (long, yyp - yystackp->yyitems)));
8113 if (*YY_REINTERPRET_CAST (yybool *, yyp))
8114 {
8115 YY_ASSERT (yyp->yystate.yyisState);
8116 YY_ASSERT (yyp->yyoption.yyisState);
8117 YY_FPRINTF ((stderr, "Res: %d, LR State: %d, posn: %ld, pred: %ld",
8118 yyp->yystate.yyresolved, yyp->yystate.yylrState,
8119 YY_CAST (long, yyp->yystate.yyposn),
8120 YYINDEX (yyp->yystate.yypred)));
8121 if (! yyp->yystate.yyresolved)
8122 YY_FPRINTF ((stderr, ", firstVal: %ld",
8123 YYINDEX (yyp->yystate.yysemantics.yyfirstVal)));
8124 }
8125 else
8126 {
8127 YY_ASSERT (!yyp->yystate.yyisState);
8128 YY_ASSERT (!yyp->yyoption.yyisState);
8129 YY_FPRINTF ((stderr, "Option. rule: %d, state: %ld, next: %ld",
8130 yyp->yyoption.yyrule - 1,
8131 YYINDEX (yyp->yyoption.yystate),
8132 YYINDEX (yyp->yyoption.yynext)));
8133 }
8134 YY_FPRINTF ((stderr, "\n"));
8135 }
8136
8137 YY_FPRINTF ((stderr, "Tops:"));
8138 {
8139 YYPTRDIFF_T yyi;
8140 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
8141 YY_FPRINTF ((stderr, "%ld: %ld; ", YY_CAST (long, yyi),
8142 YYINDEX (yystackp->yytops.yystates[yyi])));
8143 YY_FPRINTF ((stderr, "\n"));
8144 }
8145 #undef YYINDEX
8146 }
8147 #endif
8148
8149 #undef yylval
8150 #undef yychar
8151 #undef yynerrs
8152 #undef yylloc
8153
8154
8155
8156
8157 #line 2460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
8158
8159
8160 /* programs */
8161
8162 std::string yyerrstr(string const& msg, int32_t row, int32_t col, char const* txt)
8163 {
8164 ostringstream out;
8165 out << msg << " ["
8166 << curfilename << " "
8167 << "Line " << row << " "
8168 << "Column " << col;
8169 if (yyleng)
8170 out << " '" << txt << "'";
8171 out << "]";
8172 return out.str();
8173 }
8174 void yymsg(string const& message, int32_t row, int32_t col, char const* txt)
8175 {
8176 zconsole_info(yyerrstr(message,row,col,txt).c_str());
8177 }
8178 void yywarn(string const& message, int32_t row, int32_t col, char const* txt)
8179 {
8180 zconsole_warn(yyerrstr(message,row,col,txt).c_str());
8181 }
8182 void yyerrmsg(string const& message, int32_t row, int32_t col, char const* txt)
8183 {
8184 zparser_error_out();
8185 zconsole_error(yyerrstr(message,row,col,txt).c_str());
8186 }
8187 void yydb(string const& message, int32_t row, int32_t col, char const* txt)
8188 {
8189 zconsole_db(yyerrstr(message,row,col,txt).c_str());
8190 }
8191
8192 void yyerror(std::unique_ptr<ASTFile>&, const char *s)
8193 {
8194 yyerrmsg(s);
8195 }
8196
8197 namespace ZScript
8198 {
8199 std::unique_ptr<ASTFile> parseFile(std::string const& filename, bool is_buf)
8200 {
8201 std::unique_ptr<ASTFile> result;
8202
8203 // Reset lexer.
8204 yyin = NULL;
8205 resetLexer();
8206
8207 // Read in the file.
8208 yyin = fopen(filename.c_str(), "r");
8209 yyout = std::tmpfile();
8210 if (!yyin)
8211 {
8212 zconsole_error("Can't open input file");
8213 return nullptr;
8214 }
8215 curfilename = is_buf ? "ZQ_BUFFER" : filename;
8216
8217 // Run the parser.
8218 if (yyparse(result))
8219 {
8220 result.reset();
8221 }
8222 fclose(yyout);
8223 fclose(yyin);
8224
8225 return std::unique_ptr<ASTFile>(result.release());
8226 }
8227 };
8228